1

こんにちは私はアプリからシェルコマンドを実行しようとしています。コードはエラーなしで実行されますが、出力は表示されません。例として、私はファイルをコピーしようとしています。このコマンドは、シェルコマンドプロンプトを介して実行している間は正常に機能します。これが私が使用したコードです。LogCatのデバッグステートメントから、すべてのコードブロックがカバーされていることがわかりました。ただし、ファイルはコピーされません。解決策を提案してください。PS:私はこれをエミュレーター経由で実行しています。

@Override
public void onClick(View v) {
    if (v.getId() == R.id.click_button){
        String[] commands = {"cp /mnt/sdcard/rr.txt /mnt/sdcard/zzzz.txt"};
        try {
            Log.d("Ac","before fun call.....");

            RunAsRoot(commands);
            Log.d("Ac","after fun call...");


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
 public void RunAsRoot(String[] cmds) throws IOException{
     Process p = Runtime.getRuntime().exec("su");
     DataOutputStream os = new DataOutputStream(p.getOutputStream());            
     for (String tmpCmd : cmds) {
             os.writeBytes(tmpCmd+"\n");
            Log.d("Ac","inside...");

     }           
     os.writeBytes("exit\n");  
    Log.d("Ac","outsidee...");

     os.flush();

}

}

4

2 に答える 2

1

見てみましょう:RootTools
シェルコマンドを実行する必要があるプロジェクトでこのライブラリを使用しています。

RootToolsは、ルート化されたアプリケーションの開発に使用するための標準化されたツールのセットをルート化された開発者に提供します。最終的には、開発者に堅牢で使いやすいライブラリを提供することでこれを実現します。これにより、開発時間が大幅に改善され、コードの再利用が促進されます。このプロジェクトは、貢献できるものがあると感じている実績のある開発者なら誰でも参加できます。一緒に売り込むことで、独自のプロセスを合理化し、アプリの有効性を向上させ、新しい手法を学び、ユーザーにより良いエクスペリエンスを提供することができます。

于 2013-02-03T13:34:31.897 に答える