android - lista - instalar adb
¿Es posible ejecutar comandos de adb a través de mi aplicación de Android? (4)
Ejecutando
Runtime.getRuntime().exec("adb shell input keyevent 120");
Obtuve el siguiente error: java.io.IOException: No se puede ejecutar el programa "adb": error = 13, Permiso denegado.
Ejecutando
Runtime.getRuntime().exec("adb shell input keyevent 120");
No hay ningún error, pero al mismo tiempo, mi solicitud no se procesa para tomar la captura de pantalla.
Descubrí que esto funcionaba en versiones anteriores de Android pero luego fue eliminado. Aunque no puedo proporcionar la fuente aquí, ¿por qué no está funcionando?
Espero que esto ayude a alguien como yo que está tratando de utilizar este enfoque para tomar la captura de pantalla cuando la aplicación no está en primer plano.
¿Alguien puede decir si los comandos adb se pueden ejecutar a través de mi aplicación de Android. Si es posible ejecutar, ¿cómo se puede implementar?
Alguna ayuda ? Apreciado ...
Las aplicaciones normales de Android tienen diferentes privilegios para los procesos iniciados a través de adb, por ejemplo, los procesos iniciados a través de adb pueden capturar la pantalla, mientras que las aplicaciones normales no lo son. Por lo tanto, puede ejecutar comandos desde su aplicación a través de Runtime.getRuntime (). Exec, pero no tendrán los mismos privilegios que si hubiera ejecutado desde un shell adb.
adb shell invocado en Runtime.getRuntime (). exec no se ejecuta con el usuario de shell. Proporciona shell pero con el mismo usuario propietario del proceso (como u0_a44). Esa es la razón por la cual todos los comandos no funcionaron.
Puedes hacerlo con esto:
Process process = Runtime.getRuntime().exec("your command");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
No te olvides de rodearlo con una declaración try y catch.
Editar:
@Phix tiene razón, ProcessBuilder sería mejor usarlo.