如果发生某些事件,我如何解锁手机屏幕?我尝试了以下代码,但它没有解锁屏幕。通过解锁我的意思是绕过PIN或模式
使用以下代码并在收到短信时触发。
private void unlockScreen(Context context){
Log.d("dialog", "unlocking screen now");
PowerManager powermanager = ((PowerManager)context.getSystemService(Context.POWER_SERVICE));
WakeLock wakeLock = powermanager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
wakeLock.acquire();
Window wind = DialogActivity.this.getWindow();
wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
}
屏幕已启动,但用户必须输入PIN /模式。我如何克服它?
答案 0 :(得分:2)
直接从{API {1}}
的Android API网站禁止显示键盘锁。如果当前是键盘锁 显示,隐藏它。键盘手将被阻止再次出现 直到调用reenableKeyguard()。一个叫做这个的好地方是 onResume()注意:此调用在任何DevicePolicyManager时都无效 已启用,需要密码。
根据那个粗体声明,我可能会说没有密码就不能这样做。唯一的方法是,如果您将自己(应用程序)作为设备管理员添加到手机中,那么您可以通过设备管理员应用程序控制删除密码,擦除密码等。
来源:KeyguardManager.KeyguardLock& DevicePolicyManager
修改强>
我找到了LockPatternUtils
的源代码(我知道它来自旧版本,但我怀疑它已经发生了很大的变化),这部分是模式锁,它有整个DevicePolicyManager。我相信它有一个内部服务在系统中以root身份运行,可以完成所有工作。因此,如果没有设备管理员,您甚至无权在具有安全设置的情况下解锁手机。