¿Cómo ejecutar la acción de una aplicación específica a través del terminal?
13
Necesito ejecutar mi aplicación de Android desde una computadora remota a través de SSH, pero no soy un experto en línea de comandos, así que me gustaría saber: ¿cómo ejecutar una acción específica de una aplicación? (no solo abrirlo) Lo que implica: ¿cómo SABER la sintaxis exacta de las posibles acciones de una aplicación?
por ejemplo: quiero iniciar una aplicación de grabación de audio en mi teléfono desde mi computadora, Y comenzar a grabar desde el control remoto. ¿Es posible?
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
Para controlar una aplicación, tendrá que poner los valores correctos de <package_name>y <full_class_name>en el comando. Por ejemplo, puede usar com.google.gmail/com.google.gmail.check_mail(Nombres hipotéticos) como última parte del comando.
Muchos desarrolladores de aplicaciones mantienen la información de clase privada.
No todos los desarrolladores hacen programación modular inteligente. Es un buen hábito dividir una aplicación en varias clases que podrían activarse por intentos, pero no todos los desarrolladores son inteligentes.
Solución del primer problema: descompile la aplicación usando apktool y vea toda la información. También hay otras formas, pero este es un método que siempre funciona (a menos que la aplicación se base en NDK en lugar de SDK).
Solución del segundo problema: nada.
No se preocupe, la mayoría de las aplicaciones populares siguen las mejores prácticas de programación y proporcionan Public APIinformación de la clase.
¿Es posible añadir alguna explicación sobre los parámetros <package_name>y <full_class_name>, y la manera de obtenerlos? Para mí, al menos esto último no está claro.
Izzy
@Izzy Agregó la explicación ... Revise la respuesta, nuevamente.
Android Quesito
¡Gracias! +1 de mi parte: D Compacto y fácil de entender. Tomaré la libertad de agregar algunos enlaces, si no le importa, porque apktools(de lo contrario, los no desarrolladores podrían pensar que es parte del SDK y perderse;)
Izzy
@Izzy Aquí está mi problema: Soy incapaz de poner en marcha esta Actividad de aplicación Ajustes: com.android.settings/.Settings$StorageSettingsActivity. Inténtalo tú mismo. En realidad, ¿qué es esa cadena después del $signo? ¿Es como una subclase en la actividad Configuración?
Gokul NC
@GokulNC, es posible que necesite citar todo (comillas simples), o $StorageSettingsActivitypuede verse como una variable y "expandida" a una cadena vacía (a menos que haya una variable definida por ese nombre).
Izzy
9
Como dijo Sachin Shekhar, debe usar el siguiente comando:
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
Vea un ejemplo concreto:
obtener el archivo apk de su dispositivo Android o cualquier lugar de Market
<package_name>
y<full_class_name>
, y la manera de obtenerlos? Para mí, al menos esto último no está claro.apktools
(de lo contrario, los no desarrolladores podrían pensar que es parte del SDK y perderse;)com.android.settings/.Settings$StorageSettingsActivity
. Inténtalo tú mismo. En realidad, ¿qué es esa cadena después del$
signo? ¿Es como una subclase en la actividad Configuración?$StorageSettingsActivity
puede verse como una variable y "expandida" a una cadena vacía (a menos que haya una variable definida por ese nombre).Como dijo Sachin Shekhar, debe usar el siguiente comando:
Vea un ejemplo concreto:
aapt dump xmltree com.android.settings*.apk AndroidManifest.xml
Me gustaría comenzar el menú "anclaje", así que busco una actividad en la salida:
Entonces el comando final es:
El
aapt
comando es parte del SDK de Androidfuente
com.android.settings
RUTA, por eso dije que es relativa. Pruébelo en cualquier aplicación que desee.