OSDN Git Service

Merge tag 'android-8.1.0_r74' into oreo-x86
[android-x86/packages-apps-Settings.git] / src / com / android / settings / SettingsActivity.java
index 27b9be5..777df85 100644 (file)
@@ -254,6 +254,12 @@ public class SettingsActivity extends SettingsDrawerActivity
     @Override
     protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
+
+        if (isLockTaskModePinned() && !isSettingsRunOnTop()) {
+            Log.w(LOG_TAG, "Devices lock task mode pinned.");
+            finish();
+        }
+
         long startTime = System.currentTimeMillis();
 
         final FeatureFactory factory = FeatureFactory.getFactory(this);
@@ -962,4 +968,18 @@ public class SettingsActivity extends SettingsDrawerActivity
         Intent intent = new Intent(this, SearchActivity.class);
         startActivity(intent);
     }
+
+    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);
+    }
 }