web-dev-qa-db-fra.com

Lancer l'application via adb sans connaître le nom de l'activité

De la poste Est-il possible de commencer l'activité via adb shell? , nous pouvons démarrer une application Android via adb en

adb Shell am start -n yourpackagename/.activityname

Mais est-il possible de démarrer une application Android via adb sans connaître le nom de l'activité? Par exemple, en envoyant l'intention Android.intent.action.MAIN à un package? Peut-être que certaines commandes comme celle-ci:

adb Shell am start -a Android.intent.action.MAIN -n packageName

Merci!!

-Cosmo

38
hackjutsu

Oui, il est possible de lancer une application via adb Shell en utilisant l'outil Monkey.

En utilisant la commande de cette réponse :

adb Shell monkey -p app.package.name -c Android.intent.category.LAUNCHER 1

Cette commande simule le clic sur l'icône de l'application, de sorte que l'intention implicite de l'intention LAUNCHER soit transmise au destinataire spécifique déclaré dans le manifeste de l'application (MAIN).

73
Leuofiridia

En utilisant les dernières versions (au moins API 25), vous pouvez démarrer l'activité par défaut sans connaître son nom et sans utiliser monkey:

PKG=com.Android.calculator2
adb Shell am start $PKG/$(adb Shell cmd package resolve-activity -c Android.intent.category.LAUNCHER $PKG | sed -n '/name=/s/^.*name=//p')
5
Diego Torres Milano

Si vous avez le fichier apk, vous pouvez installer et démarrer l'application à l'aide de droidbot .

> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0

DroidBot est basé sur adb, mais il utilise une analyse statique pour extraire automatiquement le nom de l'activité.

0
Yuanchun Li