Maison > Java > javaDidacticiel > le corps du texte

Pourquoi l'exécution de « screenrecord » à partir de Java ne parvient-elle pas à créer un fichier vidéo ?

Patricia Arquette
Libérer: 2024-11-09 06:32:02
original
648 Les gens l'ont consulté

Why Does Executing

Exécution de commandes Shell depuis Android : résolution du problème d'exécution

Lors de la tentative d'exécution de la commande "screenrecord --time-limit 10 /sdcard /MyVideo.mp4" à partir d'une application Java utilisant Runtime.getRuntime().exec(), le fichier vidéo résultant ne parvient pas à être créé. Cela se produit bien que la commande fonctionne correctement lorsqu'elle est exécutée à partir du terminal de l'émulateur d'application.

La cause première de ce problème réside dans le fait que l'exécution de la commande telle quelle à partir de Java attribue l'ID utilisateur actuel (UID) à la commande. , plutôt que d'utiliser les privilèges élevés accordés par la commande su. En conséquence, le fichier n'est pas créé.

Solution : Redirection des E/S du sous-processus

Pour résoudre ce problème, il est nécessaire de rediriger l'entrée standard du processus su à la commande à exécuter. Cela garantit que la commande s'exécute avec les privilèges élevés prévus.

Voici un extrait de code révisé qui implémente cette solution :

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);
}
Copier après la connexion

En redirigeant le flux d'entrée standard, la commande "screenrecord" est effectivement exécuté sous les privilèges élevés accordés par le processus su, ce qui entraîne une création de fichier réussie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal