Comment envoyer une intention à l'aide des outils ADB d'Android?
adb Shell
am start -n com.package.name/com.package.name.ActivityName
Ou vous pouvez utiliser ceci directement:
adb Shell am start -n com.package.name/com.package.name.ActivityName
Vous pouvez également spécifier des actions à filtrer par vos filtres d'intention:
am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName
Il est possible d'exécuter l'application en spécifiant le nom du package uniquement à l'aide de l'outil monkey en suivant ce modèle:
adb Shell monkey -p your.app.package.name -c Android.intent.category.LAUNCHER 1
La commande est utilisée pour exécuter l'application à l'aide de l'outil Monkey qui génère une entrée aléatoire pour l'application. La dernière partie de la commande est un entier indiquant le nombre d'entrées aléatoires générées pour app. Dans ce cas, le nombre est 1 et sert en fait à lancer l'application (clic de l'icône).
Ou, vous pouvez utiliser ceci:
adb Shell am start -n com.package.name/.ActivityName
les utilisateurs de linux/mac peuvent également créer un script pour exécuter un apk avec les éléments suivants:
créez 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 "chmod + x adb-run.sh" pour le rendre exécutable.
maintenant vous pouvez simplement:
adb-run.sh myapp.apk
L'avantage ici est que vous n'avez pas besoin de connaître le nom du package ou le nom de l'activité pouvant être lancée. De même, vous pouvez créer "adb-uninstall.sh myapp.apk"
Note: Cela nécessite que vous ayez aapt dans votre chemin. Vous pouvez le trouver dans le dossier des nouveaux outils de construction du SDK.
En outre, je tiens à mentionner une dernière chose.
Lorsque vous démarrez une application à partir de adb Shell am
, , il ajoute automatiquement le drapeau FLAG_ACTIVITY_NEW_TASK (---) , ce qui entraîne le comportement changement. Voir le code .
Par exemple, si vous lancez l'activité Play Store à partir de adb Shell am
, appuyer sur le bouton ' Précédent ' (bouton précédent du matériel) ne vous prendrait pas votre application. votre activité précédente du Play Store s’il y en avait une (s’il n’y avait pas de tâche Play Store, cela vous prendrait votre application). documentation FLAG_ACTIVITY_NEW_TASK dit:
si une tâche est déjà en cours pour l'activité que vous démarrez maintenant, une nouvelle activité ne sera pas démarrée; au lieu de cela, la tâche en cours sera simplement portée à l'avant de l'écran avec l'état dans lequel elle était la dernière
Cela m'a amené à passer quelques heures à découvrir ce qui n'allait pas.
Donc, gardez à l’esprit que adb Shell am
ajoute le drapeau FLAG_ACTIVITY_NEW_TASK .
Nous pouvons également démarrer une application en connaissant le type d’application et en l’alimentant de données:
adb Shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a Android.intent.action.VIEW
Cette commande affiche les lecteurs vidéo disponibles à lire sample.3gp fichier
ouvrez ~/.bash_profile et ajoutez ces fonctions bash à la fin du fichier
function androidinstall(){
adb install -r ./bin/$1.apk
}
function androidrun(){
ant clean debug
adb Shell am start -n $1/$1.$2
}
puis ouvrez le dossier de projet Android
androidinstall app-debug && androidrun com.example.app MainActivity
Étape 1: Obtenez d’abord le nom du paquet des applications installées sur votre appareil en utilisant:adb Shell pm list packages
Étape 2: Vous obtiendrez tous les noms de paquetages, copie celui que vous voulez commencer à utiliser adb.
Étape 3: Ajoutez le nom du paquet souhaité dans la commande ci-dessous.adb Shell monkey -p 'your package name' -v 500
Par exemple:
adb Shell monkey -p com.estrongs.Android.pop -v 500
pour démarrer Es Explorer.
monkey --pct-syskeys 0
pour les cartes de développement
Sans cet argument, l'application ne s'ouvrira pas sur une carte de développement sans clés/affichage:
adb Shell monkey --pct-syskeys 0 -p com.cirosantilli.Android_cheat.textviewbold 1
et échoue avec une erreur:
SYS_KEYS has no physical keys but with factor 2.0%
Testé sur HiKey960, Android O AOSP.
Tiré de: https://github.com/ARM-software/Lisa/pull/408
Aussi demandé à: test du singe: Si le système Android ne possède pas de clé physique, quels sont les paramètres à inclure dans la commande
adb Shell am start -n '<appPackageName>/.<appActitivityName>
Ex:
adb Shell am start -n 'com.Android.settings/.wifi.WifiStatusTest'
Vous pouvez utiliser l'application APK-INFO pour connaître la liste des activités de l'application relatives à chaque package d'application.
Essayez ceci, pour ouvrir une application photo Android avec un fichier image spécifique à ouvrir en tant que paramètre.
adb Shell am start -n com.google.Android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Cela fonctionnera sur le dernier Android, aucune fenêtre contextuelle ne viendra pour sélectionner une application à ouvrir lorsque vous donnez une application spécifique à laquelle vous souhaitez ouvrir votre image.