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

Depuis la publication Est-il possible de démarrer une activité via adb shell? , nous pouvons lancer une application Android via adb by

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 une commande 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 singe.

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 l’intention implicite de LAUNCHER est livrée au récepteur 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 le 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  -install_app -policy none -count 0 

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