Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8b45357 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [9944451, 9944452, 9944738, 9944504, 9944659, 9944200,...

Merge cherrypicks of [9944451, 9944452, 9944738, 9944504, 9944659, 9944200, 9944660, 9944661, 9944739, 9944740, 9944453, 9942826, 9943174, 9944741, 9943175, 9944356, 9944357, 9944818] into qt-qpr1-b-release

Change-Id: I5519294e1f213c7f2d9d19b3ea7d6ab26e156cb9
parents 913b559d f9574548
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.core;

import android.annotation.LayoutRes;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -26,6 +27,7 @@ import android.content.pm.PackageManager;
import android.content.res.TypedArray;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
import android.view.LayoutInflater;
@@ -61,6 +63,10 @@ public class SettingsBaseActivity extends FragmentActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (isLockTaskModePinned() && !isSettingsRunOnTop()) {
            Log.w(TAG, "Devices lock task mode pinned.");
            finish();
        }
        final long startTime = System.currentTimeMillis();
        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));

@@ -148,6 +154,20 @@ public class SettingsBaseActivity extends FragmentActivity {
        }
    }

    private boolean isLockTaskModePinned() {
        final ActivityManager activityManager =
            getApplicationContext().getSystemService(ActivityManager.class);
        return activityManager.getLockTaskModeState() == ActivityManager.LOCK_TASK_MODE_PINNED;
    }

    private boolean isSettingsRunOnTop() {
        final ActivityManager activityManager =
            getApplicationContext().getSystemService(ActivityManager.class);
        final String taskPkgName = activityManager.getRunningTasks(1 /* maxNum */)
            .get(0 /* index */).baseActivity.getPackageName();
        return TextUtils.equals(getPackageName(), taskPkgName);
    }

    /**
     * @return whether or not the enabled state actually changed.
     */