Exécution de commandes Shell à partir d'applications Android
Lorsque vous tentez d'exécuter des commandes Shell à partir d'applications Android, il est essentiel de prendre en compte les limitations imposées par le système d’exploitation. Pour obtenir des privilèges élevés, il est recommandé d'utiliser l'utilitaire "su", qui fournit un mécanisme plus sécurisé pour accorder un accès root temporaire.
Dans un terminal Android standard, l'exécution de commandes avec "su" s'effectue en tapant "su" suivi de la commande souhaitée, telle que "screenrecord --time-limit 10 /sdcard/MyVideo.mp4". Cependant, lorsque vous tentez d'effectuer cette même action à partir d'une application Java, des difficultés peuvent survenir.
Un problème potentiel survient lors de la tentative d'exécution de "su" et de la commande simultanément. Pour élever correctement les privilèges, il est nécessaire de lancer d'abord le processus « su », puis de fournir la commande en entrée via le flux d'entrée standard.
Pour y parvenir, une version modifiée du code est la suivante :
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); }
En modifiant le code de cette manière, il est possible d'exécuter avec succès des commandes shell à partir d'applications Android à l'aide de l'utilitaire "su", obtenant ainsi des privilèges élevés requis pour des tâches telles que l'écran enregistrement.
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!