我正在编写 Android 功能测试。我需要设备处于唤醒状态并且应用程序处于可视化状态才能正常工作。我已经咨询过安卓开发者 http://developer.android.com/tools/testing/activity_testing.html#UnlockDevice为了那个原因。然而,所提出的解决方案存在几个问题:
- 所提出的方法现在有几种已弃用的方法。 Android API 现在建议我在窗口上使用标志:
此类在 API 级别 13 中已弃用。使用 FLAG_DISMISS_KEYGUARD
和/或 FLAG_SHOW_WHEN_LOCKED 代替;这使您可以无缝地
当您的应用程序移入和移出时隐藏键盘护罩
前台并且不需要任何特殊权限
要求。 newKeyguardLock(String) 返回的句柄允许您
禁用/重新启用键盘保护。
我尝试了这个建议,但是,与已弃用的解决方案相反,标志 one jsut 对我不起作用 - 它不会解锁设备。我还找到了确认标志解决方案不稳定的消息来源(例如,关于这个答案 https://stackoverflow.com/a/4982787/1108032).
- 第二个问题是我需要向被测应用程序添加权限。我发现这是非常错误的方法(修改被测代码以便能够测试它)。我找到了几个建议我使用的地方
src/debug/AndroidManifest.xml
为此(这个one https://stackoverflow.com/q/19870771/1108032 and this one https://groups.google.com/forum/#!topic/adt-dev/vudxFtSPsPk例如)。然而,它只是没有按照规定发生 - 调试 Mainfest 不会包含在设备上部署的内容中。与我的构建和部署方式有关吗?我使用 Eclipse 进行开发 (ADT)。仅当我使用像 ant 这样的构建工具时,这个清单注入才有效吗?
总而言之 - 有人可以建议一个稳定的解决方案,用于在执行测试时解锁和保持设备唤醒吗?
EDIT
我现在发现Robotium https://code.google.com/p/robotium/还包括unlockScreen https://github.com/RobotiumTech/robotium/blob/master/robotium-solo/src/main/java/com/robotium/solo/Solo.java#L2350最新版本的框架中的方法。它完全使用上面建议的窗口标志,并且在我的设备上也不起作用。
实例UiDevice http://developer.android.com/reference/android/support/test/uiautomator/UiDevice.html has wakeUp() http://developer.android.com/reference/android/support/test/uiautomator/UiDevice.html#wakeUp() method
此方法模拟在屏幕关闭时按下电源按钮,否则如果屏幕已打开则不执行任何操作。如果屏幕关闭且刚刚打开,此方法将插入 500 毫秒的延迟,以便让设备有时间唤醒并接受输入。
然而,我不知道解锁屏幕是否存在类似的方法,因此我当前的解决方案是删除锁定图案(设置为NONE在测试设备上)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)