summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/SettingsActivity.java')
-rw-r--r--src/com/android/settings/SettingsActivity.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 06bdd0cad4..c0ffc19df5 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -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);
@@ -957,4 +963,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);
+ }
}