From 17cbc996ce81f3aee4dc897aa5aabe1bd66539aa Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Mon, 11 Apr 2016 23:09:08 -0700 Subject: [PATCH] Avoid showing DeviceAdminAdd screen in the background of support dialog. Change-Id: Idb2f98012fc161decef579c1e87cca0f8ade2619 Fixes: 27665715 --- src/com/android/settings/DeviceAdminAdd.java | 19 +++++++++++++++++++ .../settings/ShowAdminSupportDetailsDialog.java | 1 + 2 files changed, 20 insertions(+) diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java index 364700be69..d2ba508c68 100644 --- a/src/com/android/settings/DeviceAdminAdd.java +++ b/src/com/android/settings/DeviceAdminAdd.java @@ -82,6 +82,9 @@ public class DeviceAdminAdd extends Activity { 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 @@ public class DeviceAdminAdd extends Activity { int mCurSysAppOpMode; int mCurToastAppOpMode; + boolean mIsCalledFromSupportDialog = false; + @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -129,6 +134,8 @@ public class DeviceAdminAdd extends Activity { return; } + mIsCalledFromSupportDialog = getIntent().getBooleanExtra( + EXTRA_CALLED_FROM_SUPPORT_DIALOG, false); String action = getIntent().getAction(); ComponentName who = (ComponentName)getIntent().getParcelableExtra( @@ -459,6 +466,18 @@ public class DeviceAdminAdd extends Activity { } @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 2f2379ac11..fce669c7d3 100644 --- a/src/com/android/settings/ShowAdminSupportDetailsDialog.java +++ b/src/com/android/settings/ShowAdminSupportDetailsDialog.java @@ -155,6 +155,7 @@ public class ShowAdminSupportDetailsDialog extends Activity 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)); -- 2.11.0