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