Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以通过adb外壳启动活动?_Android - Fatal编程技术网

Android 是否可以通过adb外壳启动活动?

Android 是否可以通过adb外壳启动活动?,android,Android,我想通过adb shell启动活动。这样我就可以启动所需的特定活动启动adb shell并输入如下命令 am start -n yourpackagename/.activityname 将xxx作为您在清单文件中提到的操作。例如,这将启动XBMC: adb shell am start -a android.intent.action.MAIN -n org.xbmc.xbmc/android.app.NativeActivity (更多的一般答案已经发布,但我错过了一个很好的例子。)您还

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

启动adb shell并输入如下命令

am start -n yourpackagename/.activityname

将xxx作为您在清单文件中提到的操作。

例如,这将启动XBMC:

adb shell am start -a android.intent.action.MAIN -n org.xbmc.xbmc/android.app.NativeActivity

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

您还可以使用

adb shell dumpsys window windows | grep 'mCurrentFocus'
例如:

MyPackageName是com.example.demo

MyActivityName是com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity

我像AndroidStudio一样运行它:

am start -n "com.example.app.dev/com.example.app.phonebook.PhoneBookActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
如果您有产品风格比如
dev
,它应该只出现在应用程序包名称中,而不应该出现在活动包名称中


对于emulator,它在没有android:exported=“true”的情况下工作在
AndroidManifest.xml
中标记活动,但我发现为无根物理设备添加该标记非常有用,以使其工作。

您可以通过运行
aapt dump xmltree AndroidManifest.xml
并查看输出来查找活动名称。您可以在手机上找到带有
adb shell pm列表包的apk-f
并使用
adb pull/path/to/file.apk C:\some\folder
检索它,以便与
aapt
命令一起使用。(aapt在构建工具中)也不要忘记为AndroidManifest.xml文件中的活动添加
android:exported=“true”
行。在手机上查找apk的更简单方法是
adb shell pm path
@ChristopherGalpin无需拉动apk,
adb shell dumpsys package
完成了这项工作。^^^^这是正确的解释,而不是“am start-n yourpackagename/.activityname”您启动的活动可能在不同的包中,而不是在应用程序PakagenamAnks中。很多时候,我有不同的构建类型,奇怪的是在活动名称中,没有使用软件包的后缀:/doeslearning!哇,真的很惊讶。我可以看到每个应用程序和游戏的每个活动名称,即使它们有混淆!该命令似乎不再有效,至少在我的模拟器上是这样(grep不返回任何内容):(
am start -n "com.example.app.dev/com.example.app.phonebook.PhoneBookActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER