最新的Robotium5.2.1官方新增了一个unlockScreen的API,详情介绍见: 5.2.1
官方说明这个API可以自动打开锁定的屏幕,这是很实用的功能,如果模拟器或者真机锁屏了,不解锁的话会运行不了测试用例,当前我们为了防止锁屏会安装一个软件保持屏幕常亮,但是会比较耗电。

这个API怎么使用呢?
很简单,只需要在用例开始执行之前调用一下这个API即可,如下代码所示。
public void testAddNote() {
solo.unlockScreen();
solo.clickOnMenuItem("Add note");
}
在模拟器中尝试可以自动解锁,真机中还没尝试,尝过过后补充一下。

底层是怎么实现的呢?
有了这个API,那我们来看一下它底层是怎么实现的,下面是Robotium的源代码
/** * Unlocks the lock screen. */public void unlockScreen(){instrumentation.runOnMainSync(new Runnable() {@Overridepublic void run() {activityUtils.getCurrentActivity(false).getWindow().
addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}});}
});}

通过源代码可以发现底层实现也很简单,只有一句代码,关键的是 FLAG_DISMISS_KEYGUARD这个参数的设置。
可以参考Android的官网对于这个 参数的介绍

官网的介绍中也有说明这个自动解锁只针对不是安全的锁,如果是需要密码的这种安全锁还是解锁不了的,从安全性角度来看,这也是正常的,如果这样也能解锁那就能够破解密码,个人隐私也容易泄露。


FLAG_SHOW_WHEN_LOCKED参数介绍

关于这个参数,官方介也有详细介绍,可以实现当前界面优先于锁屏界面,就是可以在锁屏界面的上层显示,不过这个实现的不是解锁操作,这个功能可能针对一些闹铃应用等需要在锁屏界面显示的比较有用。不过我们的UI自动化测试也可以尝试一下增加这个参数针对加密的锁屏设备是否可行。

更多相关文章

  1. Android开发入门之为应用添加多个Activity与参数传递
  2. java socket参数详解:TcpNoDelay
  3. 在spring 中如何注入map,set,list,property等参数
  4. 如何将动态参数传递给jquery函数
  5. 使用字符串参数调用AndroidJni静态方法。
  6. Java开发水吧点饮品系统(顶层父类对象做接口参数)
  7. java返回值是list的时候获取list的参数类型
  8. Java反射---getGenericSuperclass和ParameterizedType参数化类型
  9. 转发可变数量的参数以通过椭圆运算符接受可变数量的参数

随机推荐

  1. Android打包发布APK
  2. Android(二)HelloWorld,Android(上)
  3. Android SDK Manager无法更新的解决办法
  4. API 23 widget.AnalogClock——属性分析
  5. Android 如何获取RadioGroup选中RadioBut
  6. Android 统计图表引擎 AChartEngine(三)
  7. [置顶] 博文收集
  8. Android 代码画角标 offcutView
  9. android 模块化
  10. Android(CM)源码国内镜像下载