如何通过ADB获取当前正在运行的活动的额外内容

时间:2013-08-29 23:48:26

标签: android android-intent android-activity adb

我对使用ADB有疑问。

我知道这个命令:

adb shell dumpsys activity

可以显示当前在设备上运行的所有活动。

但我注意到,有时,意图看起来像这样:

Intent { ...some_intent/activity_name.... (has extras) }

我知道额外的意思是活动已经开始传递给它的某些参数(我可能在这里错了,如果我是,请纠正我。)

所以我的问题是,如何通过ADB获得意图/活动的额外内容?

我需要这个的原因是因为我试图通过ADB命令启动apk(安装在手机上),例如:

adb shell "su -c 'am start -n com.package.name/.ActivityName'"

该工作并启动应用程序。该应用程序有一个开始屏幕(比如我们称之为HomeActivity),您必须单击一个按钮并进行一些选择(比如SelectionActivity),它将转到另一个屏幕(比如ActionActivity)。我希望能够启动apk并让它直接进入ActionActivity。

如果我尝试使用am start命令启动ActionActivity,应用程序将崩溃,我假设这是因为它需要SelectionActivity屏幕中的参数。

这就是为什么我要查看ActionActivity屏幕实际获得的“额外”或参数是什么,以便我可以执行以下操作:

adb shell "su -c 'am start -n com.package.name/.ActionActivity -e param1 val1 -e param2 val2'"

希望我的问题很明确。

如果我在某个地方犯了错误,请纠正我。

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你的目标是以正确的意图开始“行动”活动,但你不知道应该包括哪种参数信息,对吗?

dumpsys命令不会转储你想要的所有东西,所以为了简单地实现你的目标,你有两个选择(你应该找到一个你可以将自己的固件烧成它的设备):

  1. 修改AMS中的转储方法以打印更多信息

  2. 修改ActivityThread类源代码以打印出详细的意图信息

相关问题