锁屏仅适用于我的应用

时间:2015-04-20 07:21:55

标签: android android-activity

我想要一个锁定屏幕来保护我的应用程序。例如,如果用户在后台放置应用程序并再次进入,则应出现锁定屏幕。如果用户在活动中并且他没有在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来处理我的应用

1 个答案:

答案 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。

请检查它是否对您有帮助。