OSDN Git Service

Prevent accounts page directly opening in screen pinning mode
[android-x86/packages-apps-Settings.git] / src / com / android / settings / SettingsActivity.java
index 29cd77a..3bfafbb 100644 (file)
@@ -234,6 +234,12 @@ public class SettingsActivity extends SettingsDrawerActivity
     protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
         Log.d(LOG_TAG, "Starting onCreate");
+
+        if (isLockTaskModePinned() && !isSettingsRunOnTop()) {
+            Log.w(LOG_TAG, "Devices lock task mode pinned.");
+            finish();
+        }
+
         long startTime = System.currentTimeMillis();
 
         final FeatureFactory factory = FeatureFactory.getFactory(this);
@@ -810,4 +816,18 @@ public class SettingsActivity extends SettingsDrawerActivity
 
         return bitmap;
     }
+
+    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);
+    }
 }