14 votos

¿Cómo ejecutar una aplicación específica ' s acción vía terminal?

Necesito para ejecutar mi aplicación para android desde un ordenador remoto vía SSH, pero yo no soy un experto de línea de comandos, así que me gustaría saber: ¿Cómo ejecutar una acción específica de una aplicación? (no abrirlo) Lo que implica: ¿Cómo saber la sintaxis exacta de posibles acciones de una app?

por ejemplo: Quiero empezar una aplicación de grabación de audio en mi teléfono desde mi computadora, y inicie la grabación del control remoto. ¿Es posible?

Gracias, Andrea

12voto

S S Puntos 8975

Uso este:

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

Para el control de una aplicación, usted tendrá que poner los valores correctos de <package_name> y <full_class_name> en el comando. Por ejemplo, puede utilizar com.google.gmail/com.google.gmail.check_mail (Hipotético nombres) como última parte del comando.

Obtener el nombre del paquete de una aplicación es fácil, pero obtener el nombre de la clase de acción no. Hay dos problemas:

  1. Muchos desarrolladores de aplicaciones de mantener clase de información privada.

  2. No todos los desarrolladores de hacer inteligente la programación modular. Su buen hábito para dividir una aplicación en múltiples clases de lo que podría ser desencadenada por el intento, pero no todos los programadores son inteligentes.

Solución de 1er problema: Descompilar la aplicación con apktool y ver toda la información. También hay otras formas, pero esta es siempre-el método de trabajo (a menos que la app se basa en NDK en lugar de SDK).

Solución de 2º problema: Nada.

No te preocupes, la mayoría de las aplicaciones populares siguen las mejores prácticas en la programación y proporcionan Public API a partir de la cual se puede obtener información de clase.

9voto

Aleris Puntos 4674

Como Sachin Shekhar dijo, debe utilizar el siguiente comando :

am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>

Ver un ejemplo concreto :

  • obtener el archivo apk desde tu dispositivo Android o cualquier plazas de Mercado
  • la ejecución de este comando :

aapt dump xmltree com.android.settings*.apk AndroidManifest.xml

Me gustaría empezar "tethering" en el menú, así que la búsqueda de una actividad en la salida :

(...)
   E: activity (line=190)
    A: android:name(0x01010003)=".TetherSettings" (Raw: ".TetherSettings")
(...)

Así, el comando es :

am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings

La aapt comando es parte del SDK de Android

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X