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
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)
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')
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é.