webentwicklung-frage-antwort-db.com.de

App über adb starten, ohne den Aktivitätsnamen zu kennen

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

38
hackjutsu

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

73
Leuofiridia

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')
5

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.

0
Yuanchun Li