14 votes

comment exécuter l'action d'une application spécifique via le terminal ?

Je dois exécuter mon application Android à partir d'un ordinateur distant via SSH, mais je ne suis pas un expert en ligne de commande : comment exécuter un action spécifique d'une application (et pas seulement l'ouvrir) Ce qui implique : comment CONNAÎTRE le nombre exact d'actions possibles d'une application ?

Par exemple : je veux lancer une application d'enregistrement audio sur mon téléphone à partir de mon ordinateur, ET lancer l'enregistrement à distance. Est-ce possible ?

Merci, Andrea

12voto

Galaxy Z Flip 3 Points 12200

Utilisez ça :

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

Pour contrôler une application, vous devrez mettre les valeurs correctes de <package_name> y <full_class_name> dans la commande. Par exemple, vous pouvez utiliser com.google.gmail/com.google.gmail.check_mail (Noms hypothétiques) comme dernière partie de la commande.

Obtenir le nom du paquet d'une application est facile mais l'obtention du nom de la classe d'action ne l'est pas. Il y a deux problèmes :

  1. De nombreux développeurs d'applications gardent les informations sur les classes privées.

  2. Tous les développeurs ne font pas de la programmation modulaire intelligente. C'est une bonne habitude de diviser une application en plusieurs classes qui peuvent être déclenchées par des intentions, mais tous les développeurs ne sont pas intelligents.

Solution du 1er problème : Décompiler l'application en utilisant apktool et voir toutes les informations. Il existe également d'autres méthodes, mais celle-ci fonctionne toujours (sauf si l'application est basée sur le NDK au lieu du SDK).

Solution du 2ème problème : Rien.

Ne vous inquiétez pas, la plupart des applications populaires suivent les meilleures pratiques de programmation et fournissent Public API à partir duquel vous pouvez obtenir des informations sur les classes.

9voto

Aleris Points 4674

Comme Sachin Shekhar l'a dit, vous devez utiliser la commande suivante :

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

Voir un exemple concret :

  • obtenir le fichier apk à partir de votre appareil Android ou de tout autre endroit du marché
  • en exécutant cette commande :

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

Je voudrais lancer le menu "tethering", donc je cherche une activité dans la sortie :

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

Le commandement final est donc :

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

En aapt fait partie de la commande SDK Android

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X