【问题标题】:unlocking a screen via code in android通过android中的代码解锁屏幕
【发布时间】:2019-09-27 21:23:01
【问题描述】:

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

【问题讨论】:

  • 你没有!编写自定义 ROM。如果操作系统允许第 3 方应用绕过它,那么锁定模式或 PIN 的意义何在?
  • 我认为这将是一个巨大的安全问题。我可能会把钱放在你不能这样做。我之所以这么说,是因为有人可以构建一个隐形应用程序来在收到命令或其他什么时解锁屏幕。
  • 简而言之:你无法克服它。否则,如果应用能够绕过解锁屏幕,将会引发巨大的安全问题。
  • 如果我们不能,那么当有来电时我们的手机如何自动解锁?

标签: android password-protection


【解决方案1】:

直接来自disableKeyguard() 的 android API 站点:

禁用键盘保护显示。如果键盘保护当前 显示,隐藏。将阻止键盘保护再次显示 直到 reenableKeyguard() 被调用。一个叫这个的好地方来自 onResume() 注意:此调用在任何 DevicePolicyManager 时无效 启用需要密码。

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

来源:KeyguardManager.KeyguardLock & DevicePolicyManager

编辑

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

【讨论】:

  • 我不想永久绕过键盘保护,只是为了那一刻。例如,当警报响起(例如唤醒警报)时,我可以在解锁屏幕上关闭/暂停它。如何??我想实现相同的行为。我启动了一个对话框,该对话框应该在锁定屏幕的顶部。这可能吗?
  • 在 SO 上提出另一个问题,即“如何在锁定屏幕上添加事件,例如能够在不解锁屏幕的情况下关闭/打盹的警报。我的想法是你有创建一个可以在锁定屏幕上显示的小部件,但我无法回答该问题。最好的办法是在新问题中提出该问题。
  • @user93796 请将问题标记为已回答,以便其他人将此视为正确答案。谢谢你,祝你的其他问题好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多