在Android 11及以下版本中,我们可以使用以下代码片段执行Root设备自更新:
Process process = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(process.getOutputStream());
outputStream.writeBytes("pm install -r /sdcard/myapp.apk\n");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
process.waitFor();
但在Android 12上,这种方式不再有效。为了使Root设备的自更新正常工作,请在应用程序的AndroidManifest.xml中添加以下权限:
然后可以使用以下代码片段来执行Root设备自更新:
Process process = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(process.getOutputStream());
outputStream.writeBytes("pm install -r " + apkFile.getAbsolutePath());
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
process.waitFor();
请注意,在Android 12中,我们必须指定apk文件的绝对路径,而不是使用“/ sdcard /”路径。通过执行此更改,您应该能够在Root设备上成功地进行自更新。