Ausführen von Shell-Befehlen aus Android-Anwendungen
Beim Versuch, Shell-Befehle aus Android-Anwendungen heraus auszuführen, müssen unbedingt die Einschränkungen berücksichtigt werden, die durch verursacht werden das Betriebssystem. Um erhöhte Berechtigungen zu erhalten, wird empfohlen, das Dienstprogramm „su“ zu verwenden, das einen sichereren Mechanismus zur Gewährung temporären Root-Zugriffs bietet.
In einem Standard-Android-Terminal erfolgt die Ausführung von Befehlen mit „su“ durch Eingabe „su“ gefolgt vom gewünschten Befehl, z. B. „screenrecord --time-limit 10 /sdcard/MyVideo.mp4“. Wenn Sie jedoch versuchen, dieselbe Aktion innerhalb einer Java-Anwendung auszuführen, kann es zu Schwierigkeiten kommen.
Ein potenzielles Problem tritt auf, wenn Sie versuchen, „su“ und den Befehl gleichzeitig auszuführen. Um die Berechtigungen richtig zu erhöhen, ist es notwendig, zuerst den „su“-Prozess zu starten und anschließend den Befehl als Eingabe über den Standardeingabestream bereitzustellen.
Um dies zu erreichen, lautet eine modifizierte Version des Codes wie folgt:
try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); // Provide the command through the standard input stream outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n"); outputStream.flush(); // Terminate the "su" process outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); } catch (IOException | InterruptedException e) { throw new Exception(e); }
Durch die Änderung des Codes auf diese Weise ist es möglich, Shell-Befehle von Android-Anwendungen mit dem Dienstprogramm „su“ erfolgreich auszuführen und so erhöhte Berechtigungen zu erhalten, die für Aufgaben wie die Bildschirmaufzeichnung erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie führe ich Shell-Befehle mit erhöhten Rechten in Android-Anwendungen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!