Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Error al ejecutar el comando adb mediante programación

Estoy tratando de ejecutar comandos adb mediante programación

Aquí está mi código:

File f = new File(Environment.getExternalStorageDirectory(), "screen" + System.currentTimeMillis() + ".png"); new ExecuteCommand(MainActivity.this).execute("adb shell screencap -p " + Environment.getExternalStorageDirectory().getPath() + "/" + "screen" + System.currentTimeMillis() + ".png"); 

ExecuteCommand Clase:

 public class ExecuteCommand extends AsyncTask<String, String, String> { Context mContext=null; public ExecuteCommand(Context _ctx) { mContext =_ctx; } ProgressDialog progressdailog; @Override protected void onPreExecute() { super.onPreExecute(); progressdailog = ProgressDialog.show(mContext, "Executing", "Please Wait"); } @Override protected String doInBackground(String... params) { Process p; StringBuffer output = new StringBuffer(); try { p = Runtime.getRuntime().exec(params[0]); BufferedReader reader = new BufferedReader( new InputStreamReader(p.getInputStream())); String line = ""; while ((line = reader.readLine()) != null) { output.append(line + "\n"); p.waitFor(); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } String response = output.toString(); return response; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); progressdailog.dismiss(); Log.e("Output", result); } } 

Problema en registros:

07-31 15: 26: 31.832 18716-18716 / com.example E / Output: no se puede enlazar 'tcp: 5038' * daemon no se está ejecutando. Comenzando ahora en el puerto 5038 *

No puedo tomar una captura de pantalla, pero si ejecuté el mismo comando en el símbolo del sistema, entonces esto está funcionando bien.

Pero si ejecuto

 new ExecuteCommand(MainActivity.this).execute("ls"); 

Esto funciona bien. Por favor, ayúdame a encontrar que donde está el problema en el mando.

  • ¿Cómo copiar y editar archivos en Android shell?
  • ¿Existe un equivalente a 'adb shell texto de teclado de entrada' para iOS?
  • Android 2.3: Sistema de archivos de sólo lectura pegado
  • ¿Por qué obtengo un error "sqlite3: not found" en un Nexus One enraizado cuando intento abrir una base de datos usando el shell de adb?
  • Cómo ejecutar la aplicación C ++ en Android SHELL
  • ¿Cómo utilizar crontab en Android?
  • Error al cargar la biblioteca nativa 'libnative-platform.so' para Linux amd64
  • Cómo empujar las carpetas de la computadora en sdcard usando adb shell
  • 3 Solutions collect form web for “Error al ejecutar el comando adb mediante programación”

    adb shell se utiliza cuando se está ejecutando el comando en su PC tratando de acceder al dispositivo. Pero cuando se está ejecutando el comando en el dispositivo en sí, no es necesario adb shell

    Esto será limpio:

     new ExecuteCommand(MainActivity.this).execute("screencap -p " + f); 

    Ha habido varias discusiones similares sobre esto, tanto en este sitio web como en android-developers , pero el TL: DR es que realmente no puedes ejecutar todos los comandos de shell desde el dispositivo. La mayoría de ellos necesitan permisos que sólo se conceden a las aplicaciones del sistema. El uso de los comandos shell pm por ejemplo necesita los diversos permisos de paquete, la mayoría de los cuales son sólo de sistema. Puedes consultar la lista de permisos aquí .

    Tendrá que root el dispositivo, o buscar un método alternativo de lograr lo que desea.

    Supongo que hay algún problema con los permisos.

    Utilice el nuevo apis de MediaProjection para hacerlo.

    Consulte https://github.com/googlesamples/android-ScreenCapture para obtener el código fuente.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.