【发布时间】:2018-09-24 14:53:08
【问题描述】:
我正在编写一个应用程序,该应用程序涉及获取有关所有正在运行的进程的信息(以名称/包名称开头)。我通过在我的代码中调用“ps”来做到这一点。在调用“ps”命令之前,我从应用程序中请求了超级用户访问权限。但是,当我尝试读取输入流时,应用程序冻结并且我在 Logcat 中没有得到任何输出。以下是我正在使用的代码:
Process process = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(process.getOutputStream());
outputStream.writeBytes("ps -t -x -P -p -c");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String topInfo = bufferedReader.readLine(); //Where it freezes
while(topInfo != null)
{
Log.i(appInfo, topInfo);
topInfo = bufferedReader.readLine();
}
outputStream.flush();
outputStream.close();
代码在没有超级用户请求的情况下按预期工作,但结果仅包含我的应用程序和“ps”进程。
在尝试解决此问题之前,我是否遗漏了什么,或者我需要研究什么?我曾尝试在 Internet 上搜索此问题,然后在这里提问,但没有成功。任何帮助表示赞赏。
提前致谢。
P.S 该应用程序正在运行 Android 7.1.1 的 root 设备上运行
【问题讨论】:
-
@KlingKlang 感谢您的回复。如问题中所述,我正在测试我的应用程序的设备已经植根。