Avoid showing DeviceAdminAdd screen in the background of support dialog.
Change-Id: Idb2f98012fc161decef579c1e87cca0f8ade2619
Fixes: 27665715
diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java
index 364700b..d2ba508 100644
--- a/src/com/android/settings/DeviceAdminAdd.java
+++ b/src/com/android/settings/DeviceAdminAdd.java
@@ -82,6 +82,9 @@
public static final String EXTRA_DEVICE_ADMIN_PACKAGE_NAME =
"android.app.extra.DEVICE_ADMIN_PACKAGE_NAME";
+ public static final String EXTRA_CALLED_FROM_SUPPORT_DIALOG =
+ "android.app.extra.CALLED_FROM_SUPPORT_DIALOG";
+
Handler mHandler;
DevicePolicyManager mDPM;
@@ -113,6 +116,8 @@
int mCurSysAppOpMode;
int mCurToastAppOpMode;
+ boolean mIsCalledFromSupportDialog = false;
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -129,6 +134,8 @@
return;
}
+ mIsCalledFromSupportDialog = getIntent().getBooleanExtra(
+ EXTRA_CALLED_FROM_SUPPORT_DIALOG, false);
String action = getIntent().getAction();
ComponentName who = (ComponentName)getIntent().getParcelableExtra(
@@ -459,6 +466,18 @@
}
@Override
+ protected void onUserLeaveHint() {
+ super.onUserLeaveHint();
+ // In case this is triggered from support dialog, finish this activity once the user leaves
+ // so that this won't appear as a background next time support dialog is triggered. This
+ // is because the support dialog activity and this belong to the same task and we can't
+ // start this in new activity since we need to know the calling package in this activity.
+ if (mIsCalledFromSupportDialog) {
+ finish();
+ }
+ }
+
+ @Override
protected Dialog onCreateDialog(int id, Bundle args) {
switch (id) {
case DIALOG_WARNING: {
diff --git a/src/com/android/settings/ShowAdminSupportDetailsDialog.java b/src/com/android/settings/ShowAdminSupportDetailsDialog.java
index 2f2379a..fce669c 100644
--- a/src/com/android/settings/ShowAdminSupportDetailsDialog.java
+++ b/src/com/android/settings/ShowAdminSupportDetailsDialog.java
@@ -155,6 +155,7 @@
intent.setClass(activity, DeviceAdminAdd.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
enforcedAdmin.component);
+ intent.putExtra(DeviceAdminAdd.EXTRA_CALLED_FROM_SUPPORT_DIALOG, true);
// DeviceAdminAdd class may need to run as managed profile.
activity.startActivityAsUser(intent,
new UserHandle(enforcedAdmin.userId));