Android键盘锁

时间:2012-10-17 20:28:47

标签: android keyguardlock

我正在开发一个应用程序,它将取代Android设备的默认锁定屏幕(轻扫解锁)。我已成功完成此操作,方法是禁用键盘管理器并使用广播接收器显示我的活动屏幕关闭和屏幕显示意图。现在,问题是当我因任何原因再次设置默认屏幕锁定时,我的应用程序不会禁用键盘锁,除非我强制关闭它并再次启动它。

      km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
      if( km.inKeyguardRestrictedInputMode()) {
       //it is locked
          km = (KeyguardManager) getApplicationContext().getSystemService(KEYGUARD_SERVICE);
      kl=km.newKeyguardLock("com.example.helloworld.MainActivity");
      kl.disableKeyguard();
      } else {
          Intent i = getIntent();
          i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          getApplicationContext().startActivity(i);
      }

2 个答案:

答案 0 :(得分:4)

您无法使用用户应用程序替换锁定屏幕。你做的任何事都是黑客攻击,可能会或可能不会在某些设备上运行,并可能会破坏新版本。您可以创建看起来像屏幕锁定的东西,但它不会像一个一样。此外,在Android的最新版本(post-ICS)中,解锁屏幕还会执行额外的操作,例如解锁凭据存储,而应用程序无法执行此操作(因为它没有系统权限)。

如果你真的想要更换屏幕锁,你需要建立自己的Android ROM,修改/替换库存。

答案 1 :(得分:2)

接受的答案可能已过期。

因此,理论上可以使用应用程序生成的密码保护实际的锁屏(提供真正的安全性),在Android锁屏上方浮动自定义锁屏,以及 - 当提供正确的密码时 - - 解锁并关闭真正的锁定屏幕。最后,您将使用接收器来恢复或清除SCREEN_OFF或SCREEN_ON等相关事件的密码 - 如果尚未达到超时,后者可以自动清除密码。

FWIW,我不建议使用此方法,因为崩溃或卸载会导致用户使用他们不知道的密码锁定设备。