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!
Thank you! Dieser funktioniert :) – user3325230