通过adb启动App而不知道活动名称

hac*_*tsu 45 android adb android-intent

从帖子是否可以通过adb shell启动活动?,我们可以通过adb启动Android应用程序

adb shell am start -n yourpackagename/.activityname
Run Code Online (Sandbox Code Playgroud)

但是,如果不知道活动名称,是否可以通过adb启动Android应用程序?例如,通过将android.intent.action.MAIN意图发送到包?也许有些命令是这样的:

adb shell am start -a android.intent.action.MAIN -n packageName
Run Code Online (Sandbox Code Playgroud)

谢谢!!

-Cosmo

Leu*_*dia 80

是的,可以通过使用猴子工具的adb shell启动应用程序.

使用此答案中的命令:

adb shell monkey -p app.package.name -c android.intent.category.LAUNCHER 1
Run Code Online (Sandbox Code Playgroud)

此命令模拟应用程序图标单击,因此意图隐式意图LAUNCHER将传递给在应用程序清单(MAIN)中声明的特定接收方

  • 我收到一个错误:**没有发现可以运行的活动,猴子中止** (2认同)
  • @IgorGanapolsky,你确定包名是正确的吗?如果您是应用程序的开发人员,请确保您至少有一个带有intent过滤器的活动,其中包含动作`android.intent.action.MAIN`和类别`android.intent.category.LAUNCHER` (2认同)

Die*_*ano 8

使用最新版本(至少API 25),您可以在不知道其名称的情况下启动默认活动,而不使用monkey:

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')
Run Code Online (Sandbox Code Playgroud)

  • `adb shell'am start $(cmd package resolve-activity --brief com.google.android.calculator | tail -n 1)'` - for Windows用'``替换```` (6认同)