5

发生某些事件时如何解锁手机屏幕?我尝试了以下代码,但它没有解锁屏幕。解锁是指绕过 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/图案。我该如何克服?

4

1 回答 1

3

直接来自 android API 站点disableKeyguard()

禁用键盘保护显示。如果键盘保护当前正在显示,请将其隐藏。在调用 reenableKeyguard() 之前,将阻止键盘保护再次显示。调用它的好地方是 onResume()注意:当启用任何需要密码的 DevicePolicyManager 时,此调用无效。

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

来源:KeyguardManager.KeyguardLock & DevicePolicyManager

编辑

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

于 2013-07-25T18:21:00.373 回答