public void uninstallApp(String packageName){
try {
String[] command = new String[4];
command[0] = "su";
command[1] = "mount -o remount,rw /system";
command[2] = "rm " + packageName;
command[3] = "reboot";
Runtime run = Runtime.getRuntime();
run.exec(command);
Log.d("DELETED", packageName);
} catch (Exception e) {
// TODO Auto-generated catch block
Log.e("ERROR ON DELETE", e.getMessage());
}
}
这是我的代码。此方法接收 apk 的路径,我需要做的是执行这些命令但不丢失权限。我的意思是,如果我在一个进程中执行“su”,然后在另一个进程中执行“mount”。 “mount”将没有“su”访问权限。所以我需要在一个进程中执行所有这些命令。那是行不通的。 :\
最佳答案
找到解决方案
StringBuilder cmdReturn = new StringBuilder();
try {
ProcessBuilder processBuilder = new ProcessBuilder("su","-c mount -o remount,rw /system ; rm " + packageName + " ; reboot");
Process process = processBuilder.start();
InputStream inputStream = process.getInputStream();
int c;
while ((c = inputStream.read()) != -1) {
cmdReturn.append((char) c);
}
Log.d("CMD RESPONSE", cmdReturn.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
关于android - 需要在 Runtime.getRunTime().exec 上执行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308980/