微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何通过 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 举报,一经查实,本站将立刻删除。