通过重新使用Android的屏幕锁定来阻止对活动的访问

时间:2013-05-11 05:34:16

标签: android screen-lock

在Android中,您可以进入系统设置并启用屏幕锁定,从而可以要求输入密码,PIN或其他一些解锁屏幕的方法。如果您将设备置于待机模式或在屏幕变暗后进入待机模式,通常会使用此功能。

我想要做的是在我的应用中重新使用此屏幕锁定,但阻止访问特定活动。我有一个按钮,当按下时会显示屏幕锁定活动,用户必须输入其PIN。如果他们正确输入,我就让他们可以访问活动,否则他们就无法使用它。

在这种情况下是否可以重复使用屏幕锁定活动?如果是这样,我需要什么API?如果它适用于Android 2.3

会很好

编辑:

有些人假设我的应用程序需要PIN或密码才能运行。事实并非如此。想要保护我的应用中的某些数据的用户可以要求其拥有PIN或密码才能查看。但是,当系统已有密码/ PIN活动或对话框时,为什么要编写自己的密码/ PIN活动。

3 个答案:

答案 0 :(得分:0)

这种安全性仅适用于内置系统组件,例如设置应用程序。第三方应用程序无法请求显示密码对话框,只有在用户输入正确的代码时才能继续工作。

此外,相当数量的用户根本没有设备上的密码。

答案 1 :(得分:0)

您可以查看KeyguardManagerKeyguardManager.KeyguardLock。从API级别13开始,这个功能的工作方式似乎有所改变,但我对这个主题一般不熟悉,所以如果你计划走这条路,你将不得不进行调查。

您最好在应用中实现自包含的内容。可以很容易地覆盖屏幕(可能使用另一个Activity)或以编程方式隐藏UI元素并显示带有密码输入字段的备用UI。

答案 2 :(得分:-1)

您可以使用Android 2.2本身的屏幕锁定功能。因此,它可以轻松地在2.3中使用。使用此功能的方法基本上可以通过两种方式完成。

第一个是。

有两种方法可以锁定屏幕:

   PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);


    manager.goToSleep(int amountOfTime);

第二个是

     PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,Your        Tag");
      wl.acquire();
     wl.release();

还需要许可。这是

  <uses-permission android:name="android.permission.WAKE_LOCK" />