Heim > Java > javaLernprogramm > Hauptteil

Warum kann beim Ausführen von „screenrecord' aus Java keine Videodatei erstellt werden?

Patricia Arquette
Freigeben: 2024-11-09 06:32:02
Original
647 Leute haben es durchsucht

Why Does Executing

Ausführen von Shell-Befehlen von Android: Beheben des Ausführungsproblems

Beim Versuch, den Befehl „screenrecord --time-limit 10 /sdcard Wenn Sie „/MyVideo.mp4“ aus einer Java-Anwendung mit Runtime.getRuntime().exec() aufrufen, kann die resultierende Videodatei nicht erstellt werden. Dies tritt auf, obwohl der Befehl erfolgreich funktioniert, wenn er vom Anwendungsemulator-Terminal ausgeführt wird.

Die Hauptursache für dieses Problem liegt in der Tatsache, dass bei der Ausführung des Befehls in Java dem Befehl die aktuelle Benutzer-ID (UID) zugewiesen wird , anstatt die durch den Befehl su gewährten erhöhten Berechtigungen zu verwenden. Infolgedessen wird die Datei nicht erstellt.

Lösung: Unterprozess-E/A-Umleitung

Um dieses Problem zu beheben, ist es notwendig, die Standardeingabe umzuleiten des su-Prozesses an den auszuführenden Befehl an. Dadurch wird sichergestellt, dass der Befehl mit den vorgesehenen erhöhten Berechtigungen ausgeführt wird.

Hier ist ein überarbeiteter Codeausschnitt, der diese Lösung implementiert:

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 e) {
    throw new Exception(e);
} catch (InterruptedException e) {
    throw new Exception(e);
}
Nach dem Login kopieren

Durch Umleitung des Standardeingabestreams, des Befehls „screenrecord“. wird effektiv unter den vom su-Prozess gewährten erhöhten Berechtigungen ausgeführt, was zu einer erfolgreichen Dateierstellung führt.

Das obige ist der detaillierte Inhalt vonWarum kann beim Ausführen von „screenrecord' aus Java keine Videodatei erstellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage