Exécution de commandes Shell à partir d'Android : analyse d'un piège courant
Dans le développement Android, il peut survenir des cas où l'exécution de commandes Shell est nécessaire . Cependant, des pièges courants peuvent survenir lorsque vous tentez d'exécuter de telles commandes à partir d'une application Java. Un de ces pièges est observé avec la commande "su" qui accorde des privilèges de superutilisateur sur les appareils rootés.
Considérez le scénario de capture d'écran à l'aide de la commande screenrecord. Lorsqu'elle est exécutée via le terminal de l'émulateur d'application, la commande lance avec succès l'enregistrement. Cependant, l'exécution de la même commande depuis Java à l'aide de la méthode Runtime.getRuntime().exec() ne parvient pas à créer l'enregistrement.
La divergence provient de la méthode de transmission des commandes au processus "su". Le terminal de l'émulateur permet la saisie directe des commandes, alors qu'en Java, la commande doit être fournie en entrée du processus "su" via son entrée standard.
La solution consiste à rediriger la commande vers le processus "su" entrée standard utilisant DataOutputStream. Voici l'extrait de code révisé :
En redirigeant la commande vers l'entrée standard, le processus "su" reçoit la commande et l'élève avec les privilèges root, exécutant ainsi avec succès l'enregistrement d'écran. Cette technique garantit que les commandes shell peuvent être exécutées efficacement à partir d'applications Android, nécessitant même des privilèges de superutilisateur.
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!