Lancer L'application via la BAD sans connaître le nom de l'activité [dupliquer]

Cette question a déjà une réponse ici:

À partir du post est-il possible de démarrer l'activité via le shell adb?, nous pouvons démarrer une application Android via adb par

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é? Pour exemple, en envoyant le android.intention.action.Main intention d'un paquet? Peut-être une commande comme celle-ci:

adb shell am start -a android.intent.action.MAIN -n packageName

Merci!!

-Cosmo

38
demandé sur Alex P. 2015-04-29 01:49:39

3 réponses

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 de l'icône de l'application, de sorte que le lanceur d'intention implicite d'intention est livré au récepteur spécifique déclaré dans le manifeste d'application (principal)

71
répondu Leuofiridia 2017-05-23 12:18:30

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 ne pas 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
répondu Diego Torres Milano 2016-12-15 22:31:35

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
répondu Yuanchun Li 2017-06-09 23:47:52