java - 通过 pid 在 Android 上终止进程

标签 java android linux

我发现了一些关于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/

相关文章:

android - java.lang.IllegalStateException : attempt to re-open an already-closed object 错误

Android:如何对标准 android 短信 GUI 进行编程更改

android - 拦截 DialogFragment dismiss 内部 Activity

在运行 configure 时配置不同于默认的编译器

linux - 在 X 启动时执行 JAR

java - 将调用方法的值返回给 future 对象

java - 是否可以获得abstract、extends、implements关键字的源代码?

java - 检查可编辑的 jcombobox

c - 在 while 循环中使用 getch()

java: Class.isInstance 与 Class.isAssignableFrom