我正在编写 Android 功能测试。我需要设备处于唤醒状态并可视化应用程序以便它们工作。为此,我咨询了Android 开发人员。但是,建议的解决方案存在几个问题:
- 建议的方法现在有几个不推荐使用的方法。Android API 现在建议我在窗口上使用标志:
此类在 API 级别 13 中已弃用。请改用 FLAG_DISMISS_KEYGUARD 和/或 FLAG_SHOW_WHEN_LOCKED;这允许您在应用程序移入和移出前台时无缝隐藏键盘保护,并且不需要请求任何特殊权限。由 newKeyguardLock(String) 返回的句柄,允许您禁用/重新启用键盘保护。
我尝试了这个建议,但是,与不推荐使用的解决方案相反,flag one jsut 对我不起作用 - 它不会解锁设备。我还找到了确认标志解决方案不稳定性的消息来源(例如对此答案的评论)。
- 第二个问题是我需要为被测应用程序添加权限。我发现这是一种非常错误的方法(修改被测代码以便能够对其进行测试)。我找到了几个建议我使用
src/debug/AndroidManifest.xml
的地方(例如这个和这个)。然而,它并没有像所说的那样发生 - 调试 Mainfest 不会包含在设备上部署的东西中。它与我构建和部署的方式有关吗?我使用 Eclipse 进行开发 (ADT)。只有当我使用像 ant 这样的构建工具时,这种清单注入才会起作用吗?
总而言之 - 有人可以建议在我的测试执行时解锁和保持设备唤醒的稳定解决方案吗?
编辑
我现在发现RobotiumunlockScreen
在他们最新版本的框架中也包含了方法。它完全使用了上面建议的窗口标志,也不能在我的设备上运行。