0

我正在尝试使用 SuperUser 命令来创建位于某个位置的文件列表。我正在使用这篇文章中列出的方法:

Android 使用超级用户权限?允许访问

我的具体代码如下所示:

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) {

        }

它运行没有任何错误。我的问题是我不知道如何产生任何输出。

请注意,在代码中我试图获取应用程序列表(我知道我可以用不同的方式做到这一点)但我需要它在一般情况下工作......

4

2 回答 2

0

您不需要使用 su 来获取已安装软件包的列表

如何获取已安装的 android 应用程序列表并选择一个运行

但是在您的代码中,您说它不输出任何内容。但是您究竟希望它输出什么(以及在哪里)?你从来没有告诉它显示任何东西。

于 2012-05-25T00:51:57.277 回答
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();
于 2012-05-25T00:41:16.800 回答