2017-08-31 50 views
0

当反应用程序,我发现最近,似乎一些应用程序清单并没有把指定的活动我想要的视图。例如,如果com.example.app是我想要的看法和我运行下面的命令:查找所有可用的活动/片段为一个应用程序,不是你的

dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' 

产生的输出将是这样的:

mCurrentFocus=Window{9280f2a u0 com.example.app/com.example.app.MainSubMenu} 
mFocusedApp=AppWindowToken{da37759 token=Token{9d56fa0 ActivityRecord{5c490a3 u0 com.example.app/.MainSubMenu t98}}} 

这是好的,但是当我所在的屏幕显然是一个子活动/子视图/片段,dumpsys和logcat将向我显示此视图的完整路径。总之,我想找到片段/视图的名称并直接启动它。这个语法看起来很有希望实现一个片段视图推出(可能有些变化):

am start -n com.example.app/.MainSubMenu -e :android:show_fragment com.example.app.somefragmentview 

但我不确定如何找到所有片段名字的应用程序的每个活动。

+0

片段在清单中列出,以及。但了解片段名称对你无能为力。大多数情况下,碎片需要'am'命令不支持的类型才能正确显示。 –

+0

谢谢亚历克斯P.我发现我其实是问这里提出同样的问题:https://stackoverflow.com/questions/18522733/how-to-get-extras-of-currently-running-activity-through-adb – itsthegrimace

+0

更具体地,将logcat的输出是这样的:I/ActivityManager(530):START U0 {CMP = com.example.app/.MainSubMenu(具有额外)}从上显示0 UID 10083我需要的东西转储'有额外的信息。 – itsthegrimace

回答

0

我最终使用AutoInput结合MacroDroid来根据文本选择应用程序主(启动)屏幕的特定元素。这使我无需依赖触摸事件坐标即可进入应用程序的任何屏幕,因为这些应用程序的开发人员通常会使用后续更新来切换菜单项位置。

下面是详细的自动输入过程(我想象可以与塔斯克以及被集成):

  1. 安装上述两种应用程序。
  2. 当选择MacroDroid的行动,选择“语言环境/塔斯克插件”选项。这将列出AutoInput的选项,以及针对您下载的不同插件的其他选项,我想。
  3. 从列表中选择“自动输入操作”选项。
  4. 从下一个屏幕选择“动作”,然后点击“。
  5. 为“字段类型”选择“文本”,或其他任何一条信息,你知道的菜单/按钮/元素,你通常会选择去你想要的画面。我们正在讨论存在于应用主(启动)屏幕上的菜单/按钮/元素。
  6. 填写“现场文字”与菜单/按键/元素的文本。
  7. 在右上角打对号,当你完成后,它会返回到MacroDroid。

的几个注意事项:

  • 菜单/按键/元素必须是主(启动)屏幕上显示的自动输入识别和选择它。我试图打开的初始菜单项只能通过首先滚动到达。为了解决这个问题,我告诉MacroDroid使用'输入刷卡'命令首先运行一个脚本,使菜单项可见。
  • 如果你的目标菜单/按键/元素不是主(启动)屏幕上,你将有,直到你达到你想要的菜单/按钮/元/屏幕跟进您最初的自动输入动作,随后自动输入操作。我想要的屏幕从主(启动)屏幕上移除两次。

  • 也许不言而喻,但我将每个AutoInput Action与适当的暂停(在MacroDroid中,Actions - >'Wait Before Next Action')分开以选择每个菜单/按钮/元素,同时考虑屏幕加载时间。

这一切都有点钝,我意识到,在不脱离logcat的知道如何提取(有临时演员)的信息,这是没有强迫我依靠触摸坐标唯一可用的解决方案事件。希望这可以提供一个可行的选择,直到有人发现/提供一种方式从活动中提取额外的原始数据。

相关问题