Android 如何通过ADB获取当前正在运行的活动的额外信息

Android 如何通过ADB获取当前正在运行的活动的额外信息,android,android-intent,android-activity,adb,Android,Android Intent,Android Activity,Adb,我有一个关于使用ADB的问题 我知道这个命令: adb shell dumpsys activity 可以显示设备上当前正在运行的所有活动 但我注意到有时候,意图是这样的: Intent { ...some_intent/activity_name.... (has extras) } 我知道extras意味着该活动是通过传递给它的某种参数启动的(我可能在这里错了,如果我错了,请纠正我) 所以我的问题是,我如何通过ADB获得额外的意图/活动 我之所以需要它,是因为我正试图通过ADB命令启动a

我有一个关于使用ADB的问题

我知道这个命令:

adb shell dumpsys activity
可以显示设备上当前正在运行的所有活动

但我注意到有时候,意图是这样的:

Intent { ...some_intent/activity_name.... (has extras) }
我知道extras意味着该活动是通过传递给它的某种参数启动的(我可能在这里错了,如果我错了,请纠正我)

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

我之所以需要它,是因为我正试图通过ADB命令启动apk(安装在手机上),类似于:

adb shell "su -c 'am start -n com.package.name/.ActivityName'"
adb shell "su -c 'am start -n com.package.name/.ActionActivity -e param1 val1 -e param2 val2'"
这样就可以运行并启动应用程序。应用程序有一个开始屏幕(比如我们称之为HomeActivity),您必须单击一个按钮并进行一些选择(比如SelectionActivity),然后它将转到另一个屏幕(比如ActionActivity)。我希望能够启动apk并使其直接进入ActionActivity

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

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

adb shell "su -c 'am start -n com.package.name/.ActivityName'"
adb shell "su -c 'am start -n com.package.name/.ActionActivity -e param1 val1 -e param2 val2'"
希望我的问题清楚

如果我在什么地方出错,请纠正我


提前谢谢

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

dumpsys命令不会转储您想要的所有内容,因此为了简单地实现您的目标,您有两个选项(您应该找到一个可以将自己的固件刻录到其中的设备):

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

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


  • 看看这是否有帮助:。你怎么知道它只是缺少额外的?第一个活动可以做其他事情。顺便说一句,你通常不需要
    su
    来运行
    am
    。你有没有想过这个问题的答案?我正试着做同样的事情。你好@AndiJay。很抱歉迟了答复。事实上,我从来没有想到这一点。正如Robin(下面)所建议的,安装自定义固件似乎是唯一的方法。嗨Robin,谢谢你的回答。不幸的是,我无法修改ActivityThread类的源代码,因为apk不是我的,所以我无法修改源代码来放入任何内容。嗨,Robin,谢谢你的回答。不幸的是,我无法修改ActivityThread类源代码,因为apk不是我的,所以我无法修改源代码来打印任何额外的内容。至于修改dumpsys方法,恐怕这不是我的选择。我的项目要求我使用当前驻留在手机上的固件。是否没有内置的android adb命令来实现这一点?谢谢我是说,你只是想得到信息。因此,您可以使用自定义固件来获取所需信息。使用自定义固件,您可以修改dumpsys或活动线程源代码。它们都是框架源代码。这只是实现目标的一种方法。