Shell-Befehle von Android über Java ausführen
Bei dieser Anfrage versucht der Benutzer, den Befehl „screenrecord“ aus einer Java-Anwendung heraus auszuführen auf einem Android-Gerät. Im Gegensatz zur erfolgreichen Ausführung im Terminalemulator schlägt derselbe Code jedoch in Java fehl.
Lösung
Das Problem liegt an den unzureichenden Berechtigungen, die dem Java-Prozess gewährt wurden. Um dies zu beheben, muss man zunächst Superuser-Rechte erlangen, indem man „su“ ausführt und dann den „screenrecord“-Befehl über die Standardeingabe des initiierten „su“-Prozesses weiterleitet.
Der folgende Java-Code bietet eine Lösung:
try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); } catch (IOException | InterruptedException e) { throw new Exception(e); }
Dieser modifizierte Code erfasst die Standardeingabe des „su“-Prozesses, überträgt den „screenrecord“-Befehl und beendet den „su“-Prozess, sodass der Befehl ausgeführt werden kann Mit den erforderlichen erhöhten Berechtigungen ausführen.
Das obige ist der detaillierte Inhalt vonWie führe ich Shell-Befehle wie „screenrecord' von Java auf Android aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!