import android.annotation.LayoutRes;
import android.annotation.Nullable;
+import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
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;
@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));
}
}
+ 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.
*/