Android Root führe su mit den Parametern @ a

Ich habe ein Problem beim Ausführen von su mit Parametern (mit Leerzeichen ?!). Meine Command.java sieht so aus:

public class Command
{
    Process process;

public String executeCommand(String command)
{

    StringBuffer output = new StringBuffer();

    try {
        process = Runtime.getRuntime().exec(command);
        process.waitFor();
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line = "";
        while ((line = reader.readLine())!= null) {
            output.append(line + "\n");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    String response = output.toString();
    return response;
}
}

n meiner MainActivity funktioniert es für einzelne Befehl

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView content = (TextView) findViewById(R.id.txt_content);

    Command cmd = new Command();

    String outp = cmd.executeCommand("su -c 'id'");
    Log.d("OOOOOOUT", outp);

    content.setText(outp);

}

Das Ergebnis zeigt, dass es funktioniert:

D/OOOOOOUT: uid=0(root) gid=0(root) context=u:r:init:s0

Dies funktioniert auch für den Befehl ls. Aber wenn ich versuche, ein Argument mit paramters zu parsen, wird es nicht ausgeführt.

Z.B

    String outp = cmd.executeCommand("su -c 'ls /data/data/'");
    Log.d("OOOOOOUT", outp);

    content.setText(outp);

Ich habe auch Folgendes versucht:

String outp = cmd.executeCommand("su -c \'ls /data/data/\'");
String outp = cmd.executeCommand("su -c 'ls -l'");

Und sogar mehr. Wenn ich diesen Befehl direkt in der Shell ausführe, erhalte ich die folgende Ausgabe:

shell@hammerhead:/ $ su -c 'ls -l'
drwxr-xr-x root     root              1970-06-20 18:01 acct
drwxrwx--- system   cache             2016-06-21 22:06 cache
-rwxr-x--- root     root       272364 1970-01-01 01:00 charger
dr-x------ root     root              1970-06-20 18:01 config

Ich habe auch versucht, den vollständigen Pfad zu verwenden:

shell@hammerhead:/ $ /system/xbin/su -c 'ls -l'                                
drwxr-xr-x root     root              1970-06-20 18:01 acct
drwxrwx--- system   cache             2016-06-21 22:06 cache

Auch innerhalb der Anwendung. Ich denke, es ist ein Parsing-Fehler. Manchmal sehe ich Leute, die am Ende eines Befehls das "\ n" hinzufügen? Keine Ahnung warum. Ich freue mich über jede Hilfe zu diesem Thema. Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage