Comment puis-je envoyer une intention à l’aide d’outils ADB Android ?
Réponses
Trop de publicités?Il est possible d’exécuter nom_application paquet spécifiant uniquement à l’aide d’outil de singe par suivent ce modèle :
Commande est utilisée pour exécuter l’application en utilisant les outils de singe qui génère une entrée aléatoire pour application. La dernière partie de la commande est entier spécifiant le nombre d’une entrée aléatoire généré pour app. Dans ce cas, le nombre est 1, ce qui en fait est utilisé pour lancer l’application (cliquez sur les icône).
linux/mac les utilisateurs peuvent également créer un script à exécuter un apk avec quelque chose comme ce qui suit:
créer un fichier nommé "adb-run.sh" avec ces 3 lignes:
pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act
puis la commande "chmod +x adb-run.sh" pour le rendre exécutable.
maintenant, vous pouvez tout simplement:
adb-run.sh myapp.apk
L'avantage ici est que vous n'avez pas besoin de connaître le nom du paquet ou projetables nom de l'activité. De même, vous pouvez créer des "adb-uninstall.sh myapp.apk"
Note: Ceci nécessite que vous avez aapt dans votre chemin. Vous pouvez le trouver dans les nouveaux outils de construction dans le dossier SDK.
Aussi, je tiens à mentionner une chose de plus.
Lorsque vous démarrez une application à partir d' adb shell am
, il ajoute automatiquement FLAG_ACTIVITY_NEW_TASK drapeau qui rend le changement de comportement. Voir le code.
Par exemple, si vous lancez le Jeu Magasin de l'activité de adb shell am
, en appuyant sur la touche"Retour"du bouton(bouton de retour) ne serait pas vous prendre votre application, il vous faudra précédente Play Store de l'activité s'il n'était pas(Si il n'y avait pas de Play store, puis il vous faudra votre application). FLAG_ACTIVITY_NEW_TASK documentation dit :
si une tâche est déjà en cours d'exécution pour l'activité que vous êtes maintenant en train, puis une nouvelle activité ne sera pas démarré; au lieu de cela, la tâche sera tout simplement être porté à l'avant de l'écran avec l'état, elle a été la dernière à
Cela m'a amené à passer quelques heures à trouver ce qui ne va pas.
Alors, gardez à l'esprit que, adb shell am
ajouter FLAG_ACTIVITY_NEW_TASK drapeau.