【问题标题】:SuperUser command outputs in AndroidAndroid 中的超级用户命令输出
【发布时间】:2012-05-10 23:38:19
【问题描述】:

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

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

        }

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

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

【问题讨论】:

    标签: android su root


    【解决方案1】:

    在您刷新退出命令后,尝试读取您的 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();
    

    【讨论】:

      【解决方案2】:

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

      How to get a list of installed android applications and pick one to run

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

      【讨论】:

      • 我认为你不明白我的问题。我正在尝试获取文件列表,不一定是已安装的软件包,并且由于我正在访问受保护的文件,因此我确实需要使用 SU。其次,我知道我没有输出任何东西,这就是我寻求帮助的原因。我不知道如何从上面的代码中生成输出(比如在列表中)。
      猜你喜欢
      • 2011-06-18
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多