我发现了一些关于stackoverflow的类似问题,但我还没有找到 一个适合我的情况。
到目前为止,我试过了:
Runtime.getRuntime().exec(new String[]{"su","-c","kill -9 "+pid});
//am.killBackgroundProcesses(pkgName);
//android.os.Process.killProcess(pid);
如果我从 adb 键入su -c kill -9 pid
,那就有效了!为什么不以编程方式工作?
我是否需要在permission
中添加AndroidManifest.xml
?
顺便说一句,该设备已经扎根。
答案 0 :(得分:1)
首先,用这种方式调用su
可能不是一个好主意。 (pid的每个变体都可能需要由管理您su
的调用的任何应用程序授权。)大多数人调用sh
然后编写他们想要执行的命令。
<击>
我立刻注意到的错误是你的-9
需要在数组的不同部分。例如:
Runtime.getRuntime().exec(new String[]{"su", "-c", "kill", "-9", ""+pid});
击> <击> 撞击>
编辑:实际上,这似乎应该可行。我忘记了-c
的论证需要是整个命令。
您可以找到一些示例代码here,用于在Android上以root身份执行命令。
您可以做的另一件事是尝试指定su
和kill
二进制文件的完整路径。 (可能是电话专用的,所以要小心)
编辑2 :我想知道您是否遇到this issue。您使用的是哪个版本的Android?