Android 在不知道活动名称的情况下通过adb启动应用程序

Android 在不知道活动名称的情况下通过adb启动应用程序,android,android-intent,adb,Android,Android Intent,Adb,从帖子中,我们可以通过adb启动一个Android应用程序 adb shell am start -n yourpackagename/.activityname 但是,是否可以在不知道活动名称的情况下通过adb启动Android应用程序?例如,将android.intent.action.MAINintent发送到包中?也许是这样的命令: adb shell am start -a android.intent.action.MAIN -n packageName 谢谢 -Cosmo是的,

从帖子中,我们可以通过adb启动一个Android应用程序

adb shell am start -n yourpackagename/.activityname
但是,是否可以在不知道活动名称的情况下通过adb启动Android应用程序?例如,将android.intent.action.MAINintent发送到包中?也许是这样的命令:

adb shell am start -a android.intent.action.MAIN -n packageName
谢谢


-Cosmo

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

使用以下命令:

此命令模拟应用程序图标单击,因此使用最新版本(至少API 25)将意向隐式意向启动器发送到应用程序清单(MAIN)中声明的特定接收方。您可以启动默认活动,而不知道其名称,也不使用
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')

如果您有apk文件,则可以使用安装和启动应用程序

>droidbot-d emulator-5554-a-install\u app-policy none-count 0

DroidBot基于adb,但它使用静态分析自动提取活动名称。

经验法则-当您接受的答案只是对另一篇文章的引用时,您的问题是duplicate@AlexP. 但这个问题并不完全相同——至少,谷歌的“亚洲开发银行启动应用程序”导致了大量的
adb shell am start-n packagename/.activityname
事件;而谷歌“不知道活动名称就启动应用程序”不会过滤出重复的SO问题。所以这个问题可能有一定的价值。重复的问题偶然地有了一个解决这个问题的答案。但这并不是专门要求回答的重复问题。这个问题要求的是一个更为特殊的情况。它奏效了。但是如何检测主活动名称呢?我想将参数发送到一个活动(com.sec.android.gallery3d包中的主活动),因此我应该知道主活动名称。在给定APK文件的情况下,是否也可以运行此操作?假设我有一个APK文件,我希望能够安装并运行它,有可能吗?我得到一个错误:找不到要运行的活动,monkeyaborted@IgorGanapolsky,您确定程序包名称正确吗?如果您是该应用程序的开发人员,请确保您至少有一个活动使用action
android.intent.action.MAIN
和category
android.intent.category.LAUNCHER
@androiddeveloper是的,这是可能的。Android Studio本身在您单击运行文件时使用adb安装和运行应用程序。查看更多详细信息我不喜欢吹毛求疵,但它不是在不知道其名称的情况下启动默认活动-它只是先找到默认活动,然后使用它。此外,无需在单独的
adb shell
会话中运行
cmd包
——它可以与
am start
在同一shell中运行。作为奖励,该命令将更加不依赖操作系统(目前它需要一些unixshell来处理替换)。最后,
cmd package resolve activity
命令有一个
--brief
参数,即使不指定类别,也会打印默认活动的全名(作为最后一行)。
adb shell'am start$(cmd package resolve activity--brief com.google.android.calculator | tail-n 1)“
-对于Windows,将
替换为
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')
> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0