如何通过 UIAutomator2 获取活动名称?

问题描述

我正在为 Android 应用构建一些通用测试工具并尝试获取活动名称(例如 com.android.calculator/.Calculator,可以通过 com.android.calculator 获得 UiDevice.currentPackageName,痛苦来自于第二部分)在测试期间。这就是说我的工具可能会测试与我的不在同一个包中的其他应用程序。例如,测试股票计算器应用。

以下是我所做的尝试列表:

  1. UiDevice.currentActivityName 已被弃用,它没有提供准确的信息
  2. InstrumentationRegistry.getInstrumentation().targetContext.getSystemService<ActivityManager>(),然后访问 ActivityManager.getRunningTasks(1).get(0).topActivity,即使视图已切换,它也始终返回相同的值(这也已弃用)
  3. 与 2 类似,我尝试了 ActivityManager.getAppTasks().get(0).getTaskInfo().topActivity,但这一直给我空
  4. ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(RESUMED)。这给了我一个空集合
  5. Application.ActivityLifecycleCallbacks。我在应用程序中注册了它,但没有收到回调。
  6. (有点有效,但并不完美)使用 adb dumpsys activity 然后在那里找到它。但是这样我必须等待一段时间,直到视图更新,否则结果仍然不准确

所以我现在正处于死胡同里,我很感激在这个问题上的任何帮助。我尽量避免反射,因为据我所知它不适用于较新的设备。因此,任何线索将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)