2016-07-11 41 views
0

Ich habe ein Problem, Ausführen von su mit Parametern (mit Leerzeichen ?!). Mein Command.java sieht so aus:Android Root execute su mit Parametern

In meiner MainActivity funktioniert es für einzelne Befehle.

@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 gilt auch für den Befehl ls funktioniert. Aber wenn ich versuche, ein Argument mit Parametern zu analysieren, wird es nicht ausgeführt.

z.

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

    content.setText(outp); 

Ich habe versucht auch die folgenden:

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

Und noch mehr. Wenn ich diesen Befehl in der Shell ausführen direkt erhalte ich folgende Ausgabe:

[email protected]:/ $ 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 versucht auch den kompletten Pfad:

[email protected]:/ $ /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 das "\ n" am Ende eines Befehls hinzufügen? Keine Ahnung warum. Ich freue mich über jede Hilfe in diesem Thema. Vielen Dank!

Antwort

0

Ich denke, die Art und Weise Argumente an den su Befehl übergeben wäre eine String-Array zu verwenden:

Runtime.getRuntime().exec(new String[]{"su","-c", "ls /data/data/"}); 
+0

Thank you! Dieser funktioniert :) – user3325230