Aus dem Beitrag Kann man die Aktivität über die Adb-Shell starten? , wir können eine Android-App per adb per starten
adb Shell am start -n yourpackagename/.activityname
Aber ist es möglich, eine Android-App über adb zu starten, ohne den Aktivitätsnamen zu kennen? Zum Beispiel durch Senden der Absicht Android.intent.action.MAIN an ein Paket? Vielleicht ein Befehl wie dieser:
adb Shell am start -a Android.intent.action.MAIN -n packageName
Vielen Dank!!
-Cosmo
Ja, es ist möglich, eine App über die adb-Shell unter Verwendung des Affentools zu starten.
Mit dem Befehl von diese Antwort :
adb Shell monkey -p app.package.name -c Android.intent.category.LAUNCHER 1
Dieser Befehl simuliert den Klick auf das App-Symbol, sodass der absichtliche Intent-LAUNCHER an den spezifischen Empfänger gesendet wird, der im App-Manifest (MAIN) angegeben ist
Mit der neuesten Version (mindestens API 25) können Sie die Standardaktivität starten, ohne ihren Namen zu kennen, und nicht monkey
verwenden:
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')
Wenn Sie die APK-Datei haben, können Sie die App mit droidbot installieren und starten.
> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0
DroidBot basiert auf adb, verwendet jedoch statische Analysen, um den Aktivitätsnamen automatisch zu extrahieren.