我发现了一些关于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
,它就成功了!为什么不以编程方式工作?
我是否需要在 AndroidManifest.xml
中添加任何权限
?
顺便说一句,设备已被 root。
最佳答案
一方面,调用 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?
关于java - 通过 pid 在 Android 上终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16744874/