¿Es posible ejecutar comandos de adb a través de mi aplicación de Android?

¿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?

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 statement try y catch.

Editar:

@Phix tiene razón, ProcessBuilder sería mejor usarlo.

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 adb shell .

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.

Ejecutando

 Runtime.getRuntime().exec("adb shell input keyevent 120"); 

Obtuve el siguiente error: java.io.IOException: No se puede ejecutar el progtwig “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.