【问题标题】:How to get extras of currently running activity through ADB如何通过 ADB 获取当前正在运行的活动的额外信息
【发布时间】:2013-08-29 23:48:25
【问题描述】:

我有一个关于使用 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'"

这样可以启动应用程序。该应用程序有一个开始屏幕(比如我们称之为 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'"

希望我的问题很清楚。

如果我在某处犯了错误,请纠正我。

提前致谢!

【问题讨论】:

  • 你怎么知道它只是缺少额外的东西?第一个 Activity 可以做其他事情。顺便说一句,您通常不需要 su 来运行 am
  • 你有没有找到答案?我正在尝试做同样的事情。
  • 你好@AndiJay。这么晚才回复很抱歉。我实际上从来没有想过这一点。正如 Robin(下)所建议的那样,安装自定义固件似乎是唯一的方法。
  • 八年后,我有同样的用例,仍然找不到额外的参数

标签: android android-intent android-activity adb


【解决方案1】:

如果我理解正确,您的目标是以正确的意图启动“动作”活动,但您不知道应该包含什么样的参数信息,对吧?

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

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

  2. 修改ActivityThread类源码,打印出详细intent信息

【讨论】:

  • 嗨罗宾,感谢您的回答。不幸的是,我无法修改ActivityThread类的源代码,因为apk不是我的,所以我无法修改源代码来放任何东西。
  • 嗨罗宾,感谢您的回答。不幸的是,我无法修改 ActivityThread 类的源代码,因为 apk 不是我的,所以我无法修改源代码来打印任何额外的东西。至于修改dumpsys方法,恐怕不是我的选择。我的项目要求我使用当前驻留在手机上的固件。是否没有内置的 android adb 命令来实现这一点?谢谢!
  • 我的意思是,您只是想获取信息。因此,您可以使用定制的固件来获取您想要的信息。使用定制固件,您可以修改 dumpsys 或活动线程源代码。它们都是框架源代码。这只是实现目标的一种方法。
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多