UiAutomator uiautomator2.0 解锁屏幕问题

lynnfang0917 · 2016年04月22日 · 最后由 liuyang 回复于 2016年07月15日 · 4831 次阅读

UiDevice 中的:
isScreenOn 方法:只能判断屏幕是亮着的还是关着的。屏幕锁屏时 isScreenOn 还是返回 true
wakeUp 方法:只能把屏幕唤醒,亮起,测试过并不能解锁

而我现在想做这样一件事:
1、我想判断屏幕是否是锁屏的,除了判断桌面元素外有没有更好的方法?
2、如何解锁屏幕,因为各款手机的差别,并不是所有的手机都是向上或者向下滑动解锁屏幕,所以用 swipe 滑动感觉不是很通用?

共收到 9 条回复 时间 点赞

uiautomator2.0 的话,直接调用 android api 获取锁屏状态吧。
解锁也应该有相关的 api,参考 appium。具体你可以百度 google 一下。

#1 楼 @sziitash appium 解锁不是用 UIAutomator 的,而是直接运行一个 apk 来解锁。

#2 楼 @chenhengjie123 请教下您有没有什么比较好的方法不呢?

我的笨办法是检查若是熄屏,就暂停脚本执行,待人工解锁后再继续执行。
当然还可以把在开发者选项中设置成 “充电时屏幕不会休眠”。

#2 楼 @chenhengjie123 可是 UIAutomator 2.0 其实就是一个 apk 来的。

#3 楼 @lynnfang0917
#5 楼 @sziitash 解锁 apk 的核心代码在这里:https://github.com/appium/unlock_apk/blob/master/src/io/appium/unlock/Unlock.java

我对 instrumentation 和 uiautomatior 2.0 不是太熟悉,不确定是否也能用到 uiautomator 2.0 中。你们可以试试。

#6 楼 @chenhengjie123 赞,谢谢分享。

#6 楼 @chenhengjie123 嗯,谢谢,我看一下

Process p = Runtime.getRuntime().exec("dumpsys window");
InputStream is = p.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String sta = "";
while ((sta = reader.readLine()) != null) {
    if (sta.contains("mShowingLockscreen=true")) {
        //解锁动作
    }
}
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册