是否可以通过adb shell启动活动?

Raj*_*mar 112 android

我想通过adb shell启动活动.这样我就可以启动所需的特定活动

Rob*_*der 208

启动adb shell并输入命令,如下所示

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

  • 您可以通过运行`aapt dump xmltree <APK> AndroidManifest.xml`并查看输出来查找活动名称. (26认同)
  • 另外不要忘记为AndroidManifest.xml文件中的活动添加`android:exported ="true"`行. (20认同)
  • 您可以在手机上找到带有`adb shell pm list packages -f`的apk并使用`adb pull /path/to/file.apk C:\ some\folder`检索它以与`aapt`命令一起使用Chris评论.(aapt在构建工具中) (13认同)
  • @ChristopherGalpin无需拉动APK,"adb shell dumpsys package"就可以完成任务. (2认同)

Woo*_*ooi 25

例如:

MyPackageName是com.example.demo

MyActivityName是com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity
Run Code Online (Sandbox Code Playgroud)

  • ^^^这是正确的解释而不是"am start -n yourpackagename/.activityname"你的启动活动可能在不同的包中,而不是app pakagename (3认同)

kli*_*mat 15

我像AndroidStudio一样运行它:

am start -n "com.example.app.dev/com.example.app.phonebook.PhoneBookActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Run Code Online (Sandbox Code Playgroud)

如果您有类似产品的味道dev,它应仅在应用程序包名称中出现,但不应出现在活动包名称中.

对于模拟器,它在没有android:exported="true"标记的情况下工作,AndroidManifest.xml 但我发现将它添加到无根物理设备以使其工作是有用的.


rbe*_*ell 13

(会将此添加为上面的评论,但没有足够的声誉......)您还可以使用查找当前屏幕活动的名称

adb shell dumpsys window windows | grep 'mCurrentFocus'
Run Code Online (Sandbox Code Playgroud)

  • 尝试 `adb shell dumpsys 窗口 windows | grep 'mActivityRecord'` (4认同)
  • 该命令似乎不再起作用,至少在我的模拟器上(grep 不返回任何内容):( (2认同)

Han*_*nif 12

adb shell am broadcast -a android.intent.action.xxx
Run Code Online (Sandbox Code Playgroud)

提及xxx作为您在清单文件中提到的操作.


Jos*_*ner 9

例如,这将启动XBMC:

adb shell am start -a android.intent.action.MAIN -n org.xbmc.xbmc/android.app.NativeActivity
Run Code Online (Sandbox Code Playgroud)

(更多的一般答案已经发布,但我错过了一个很好的例子.)