我正在尝试使用SuperUser命令来创建位于特定位置的文件列表。我正在使用这篇文章中列出的方法:
Android using Super User Permissions ? allowing access
我的具体代码如下:
try {
Process process = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(process.getOutputStream());
DataInputStream inputStream = new DataInputStream(process.getInputStream());
outputStream.writeBytes("cd " + baseDirectory + "/system/app" + "\n");
outputStream.flush();
outputStream.writeBytes("ls" + "\n");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
process.waitFor();
} catch (IOException e) {
} catch (InterruptedException e) {
}
它运行没有任何错误。我的问题是我无法弄清楚如何产生任何输出。
请注意,在代码中我试图获取一个应用程序列表(我知道我可以用不同的方式执行此操作)但我需要它在一般情况下工作...
答案 0 :(得分:0)
刷新退出命令后,尝试读取DataInputStream:
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);
}
String result = output.toString();
答案 1 :(得分:0)
您无需使用su来获取已安装软件包的列表
How to get a list of installed android applications and pick one to run
但是在您的代码中,您说它不会输出任何内容。但是你想要输出什么(以及在哪里)?你从来没有告诉它显示任何东西。