Держите активность на вершине - PullRequest
0 голосов
/ 24 мая 2018

Я хотел бы реализовать действие screenLock, которое запускается всякий раз, когда пользователь блокирует экран.Я сделал это, но если пользователь открывает журнал приложений, я вижу два действия моего приложения: Sensitive-Activity и Lock-Activity.

Если пользователь нажимает на Sensitive-Activity в стеке, оно выходит на передний план,без заполнения Lock-Activity.При этом у меня возникают серьезные проблемы с безопасностью.

Может ли кто-нибудь сказать мне, как я могу «закрепить» Lock-Activity сверху, чтобы она появлялась даже при щелчке пользователя по другим действиям?

ps .: noHistroy на Sensitive-Activity не являетсярешение, так как если не активирована блокировка, то пользователи не смогут получить доступ к приложению после его перехода в фоновый режим.

    <activity
        android:name=".Sensitive"
        android:configChanges="keyboardHidden|orientation|screenSize" />

    <activity
        android:name=".Lock"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait" />

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Загружая Чувствительную активность из фонового (истории) кода запуска, чтобы показать активность блокировки.Вы можете зарегистрировать и реализовать обратные вызовы жизненного цикла приложения

public class ForegroundWatchdog implements Application.ActivityLifecycleCallbacks {
    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {

    }

    @Override
    public void onActivityStarted(Activity activity) {

    }

    @Override
    public void onActivityResumed(Activity activity) {

    }

    @Override
    public void onActivityPaused(final Activity activity) {

    }

    @Override
    public void onActivityStopped(Activity activity) {

    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }
}

Чтобы зарегистрировать обратные вызовы:

public class SomeActivity extends Activity {
    Context appCtx = getApplicationContext();
    if (appCtx instanceof Application) {
        ForegroundWatchdod foregroundWatchdog = new ForegroundWatchdog();
        Application application = (Application)appCtx;
        application.registerActivityLifecycleCallbacks(foregroundWatchdog);
    }
}
0 голосов
/ 24 мая 2018

В файле манифеста удалите метку запуска из конфиденциальной активности.После этого пользователю будет показана только активность блокировки.В настоящее время вы можете установить обе активности как активность запуска, поэтому вы смотрите две активности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...