在反编译应用时,我最近发现,有几个应用'清单似乎没有为我想要的视图指定活动。例如,如果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 :(得分:0)
我最终使用AutoInput与MacroDroid结合使用,根据文字选择应用主(发布)屏幕的特定元素。这使我可以访问应用程序的任何屏幕而无需依赖触摸事件坐标,因为这些应用程序的开发人员通常会通过后续更新来切换菜单项位置。
这是AutoInput过程的详细信息(我想这也可以与Tasker集成):
一些注意事项:
如果目标菜单/按钮/元素不在主(启动)屏幕上,则必须跟进初始自动输入操作以及后续的自动输入操作,直到到达菜单/按钮/元素/屏幕为止想。我想要的屏幕两次从主(发布)屏幕上删除。
也许毋庸置疑,但我将每个AutoInput动作与适当的暂停分开(在MacroDroid中,动作 - >'等待下一个动作')以选择每个菜单/按钮/元素同时占用屏幕加载时间。
这有点迟钝,我意识到,但不知道如何从Logcat中提取(有额外的)信息,这是唯一可用的解决方案,没有强迫我依赖于触摸事件的坐标。希望这提供了一个可行的替代方案,直到有人找到/提供从活动中提取原始额外数据的方法。