0
我想在我的Android应用程序执行ps命令,因为这样的:运行ps命令外壳程序
try {
Process process = Runtime.getRuntime().exec("ps");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
// Waits for the command to finish.
process.waitFor();
Log.d(TAG, output.toString());
} catch (IOException e) {
} catch (InterruptedException e) {
}
我在三星Galaxy S6棒棒糖测试它。它运行,但我看到的只是根拥有的进程。
虽然在Nexus 5上使用棉花糖,但我没有看到根拥有的进程,但我看到很多其他进程。这还不是一个完整的清单。
Android中是否有某种保护措施阻止我在某些设备/操作系统版本中看到完整进程列表?
谢谢。 “top”命令是否也受到同样的限制?我试图实现的是寻找与我自己的包名相同的进程,但使用不同的UID,以及使用与我相同的UID查找进程,但使用不同的包名称。有没有办法做到这一点? – user1118764
@ user1118764是的,'top'也为进程信息使用相同的文件系统接口。我不明白你的目标吗?所有Android软件包都有唯一的软件包名称,每个软件包都有一个唯一的UID(每个用户),除非两个软件包使用相同的密钥*和*声明相同的['sharedUserId'](https://developer.android.com /guide/topics/manifest/manifest-element.html#uid)。 – ephemient
你所描述的是Android的正常行为。但是,有些情况并非如此。我试图检测这些情况。 – user1118764