通过android中的代码解锁屏幕

时间:2013-07-25 18:03:04

标签: android password-protection

如果发生某些事件,我如何解锁手机屏幕?我尝试了以下代码,但它没有解锁屏幕。通过解锁我的意思是绕过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 /模式。我如何克服它?

1 个答案:

答案 0 :(得分:2)

直接从{API {1}}

的Android API网站
  

禁止显示键盘锁。如果当前是键盘锁   显示,隐藏它。键盘手将被阻止再次出现   直到调用reenableKeyguard()。一个叫做这个的好地方是   onResume()注意:此调用在任何DevicePolicyManager时都无效   已启用,需要密码。

根据那个粗体声明,我可能会说没有密码就不能这样做。唯一的方法是,如果您将自己(应用程序)作为设备管理员添加到手机中,那么您可以通过设备管理员应用程序控制删除密码,擦除密码等。

来源:KeyguardManager.KeyguardLock& DevicePolicyManager

修改

我找到了LockPatternUtils的源代码(我知道它来自旧版本,但我怀疑它已经发生了很大的变化),这部分是模式锁,它有整个DevicePolicyManager。我相信它有一个内部服务在系统中以root身份运行,可以完成所有工作。因此,如果没有设备管理员,您甚至无权在具有安全设置的情况下解锁手机。