Avoid showing DeviceAdminAdd screen in the background of support dialog.

Change-Id: Idb2f98012fc161decef579c1e87cca0f8ade2619
Fixes: 27665715
This commit is contained in:
Sudheer Shanka
2016-04-11 23:09:08 -07:00
parent 43fa74b9fd
commit 17cbc996ce
2 changed files with 20 additions and 0 deletions

View File

@@ -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(
@@ -458,6 +465,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) {

View File

@@ -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));