我想要一个锁定屏幕来保护我的应用程序。例如,如果用户在后台放置应用程序并再次进入,则应出现锁定屏幕。如果用户在活动中并且他没有在x时间内执行任何操作,则结果相同。
我使用的是广播接收器,但它始终显示 - 如果我不在我的应用中,则会出现密码。
<receiver
android:name=".event.broadcast.LockBroadcastRecever"
android:enabled="true"
android:exported="false" >
<intent-filter android:priority="1" >
<action android:name="android.intent.action.SCREEN_ON" />
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
是否有一种方法可以限制此BR来处理我的应用
答案 0 :(得分:1)
几天前我在我的应用程序中实现了类似功能,因此也为此创建了一个提示,如下所示:
在本文中,我们将讨论屏幕超时后保护未经授权访问应用程序所需的最少代码。
场景:启用了密码/密码登录系统的应用。那么,如果应用程序被错误地打开并且经过一小段时间屏幕超时(假设不再在用户访问中),该怎么办呢?现在,什么是防止未经授权访问应用程序的最简单方法?
当屏幕超时时,有两种方法可以执行这些操作: 1.实现一个引脚/密码启用模块,为其余模块提供入口点。 2.重置应用程序。
您可以在Utility类中定义以下两种方法。
//检查屏幕是否超时
private static boolean isScreenLocked() {
return !((PowerManager) MainApplication.getsApplicationContext().getSystemService(Context.POWER_SERVICE)).isScreenOn();
}
//检查屏幕输出并定义屏幕超时时要执行的操作
public static void launchPinActivityWithTimeout(FragmentActivity iActivity) {
if (isScreenLocked()) {
//TODO Below code should be the action on screen timed out event. For instance in following code I am launching an activity that contains pin entry form. One could also finish all the activities and restart the app. Similarly many more actions
Intent logoutIntent = new Intent(iActivity, PinActivationActivity.class);
//TODO Send any specific information indicating this activity is launched as a result of screen timeout. Here sending boolean indicating device back button must be disabled
logoutIntent.putExtra("back_should_not_work", true);
iActivity.startActivity(logoutIntent);
}
}
我在每个活动的onPause()方法中调用了上面的方法launchPinActivityWithTimeout(),因为只要屏幕超时,就会为每个活动调用onPause。
请检查它是否对您有帮助。