Wie sende ich einen Intent mit den ADB-Tools von Android?
Antworten
Zu viele Anzeigen?Der bisher kürzeste Befehl ist der folgende:
adb shell monkey -p your.app.package.name 1
Dadurch wird die Standardaktivität für das Paket gestartet, das sich im Launcher befindet.
_Dank an Androiderson für den Hinweis_ .
Ich möchte noch eine weitere Sache erwähnen.
Wenn Sie eine Anwendung aus adb shell am
, es fügt automatisch das Kennzeichen FLAG_ACTIVITY_NEW_TASK hinzu was zu einer Verhaltensänderung führt. Siehe die code .
Wenn Sie zum Beispiel eine Play Store-Aktivität von adb shell am
drücken Sie die ' Zurück Die Schaltfläche "Zurück" (Hardware-Button) führt Sie nicht zu Ihrer App. Stattdessen würde sie Sie zu früheren Play Store-Aktivitäten führen, wenn es welche gab (wenn es keine Play Store-Aufgabe gab, dann würde sie Sie zu Ihrer App führen). FLAG_ACTIVITY_NEW_TASK Dokumentation sagt:
Wenn für die Aktivität, die Sie jetzt starten, bereits eine Aufgabe läuft, wird keine neue Aktivität gestartet; stattdessen wird die aktuelle Aufgabe einfach mit dem Zustand, in dem sie sich zuletzt befand, in den Vordergrund gebracht
Das hat mich einige Stunden gekostet, um herauszufinden, was falsch gelaufen ist.
Denken Sie also daran, dass adb shell am
FLAG_ACTIVITY_NEW_TASK-Flag hinzufügen .
Sie können den Namen Ihres Anwendungspakets mit dem folgenden Befehl finden:
adb shell pm list packages
Der obige Befehl gibt eine Paketliste mit allen Anwendungen zurück. Beispiel:
org.linphone.debug
.
.
com.android.email
Jetzt möchte ich eine App starten linphone mit dem unten stehenden Befehl und das hat bei mir funktioniert:
adb shell am start org.linphone.debug
Datei öffnen ~/.bash_profile und fügen Sie diese Bash-Funktionen am Ende der Datei hinzu
function androidinstall(){
adb install -r ./bin/$1.apk
}
function androidrun(){
ant clean debug
adb shell am start -n $1/$1.$2
}
Öffnen Sie dann den Android-Projektordner:
androidinstall app-debug && androidrun com.example.app MainActivity