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

exit コマンドをフラッシュした後、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 に答える
0

インストールされているパッケージのリストを取得するために su を使用する必要はありません

インストールされている Android アプリケーションのリストを取得し、実行するアプリケーションを選択する方法

ただし、コードでは、何も出力しないと言います。しかし、正確には何を (そしてどこに) 出力したいのでしょうか? 何かを表示するように指示したことはありません。

于 2012-05-25T00:51:57.277 に答える