JJa*_*kJi 8 android adb android-intent android-activity
我有一个关于使用ADB的问题.
我知道这个命令:
adb shell dumpsys activity
Run Code Online (Sandbox Code Playgroud)
可以显示当前在设备上运行的所有活动.
但我注意到,有时,意图看起来像这样:
Intent { ...some_intent/activity_name.... (has extras) }
Run Code Online (Sandbox Code Playgroud)
我知道额外的意思是活动已经开始传递给它的某些参数(我可能在这里错了,请纠正我,如果我).
所以我的问题是,如何通过ADB获得意图/活动的额外内容?
我需要这个的原因是因为我试图通过ADB命令启动apk(安装在手机上),例如:
adb shell "su -c 'am start -n com.package.name/.ActivityName'"
Run Code Online (Sandbox Code Playgroud)
这工作并启动应用程序.该应用程序有一个开始屏幕(比如我们称之为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'"
Run Code Online (Sandbox Code Playgroud)
希望我的问题很明确.
如果我在某个地方犯了错误,请纠正我.
提前致谢!
如果我理解正确,您的目标是以正确的意图启动“操作”活动,但您不知道应该包含什么样的参数信息,对吗?
dumpsys 命令不会转储您想要的所有内容,因此为了简单地实现您的目标,您有 2 个选项(您应该找到一个可以将自己的固件烧录到其中的设备):
修改AMS中的dump方法,打印出更多信息
修改ActivityThread类源码,打印出详细的intent信息