Merge "Relaunch previous activity after turning work profile on" into nyc-dev

This commit is contained in:
Rubin Xu
2016-04-08 09:20:45 +00:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -53,6 +54,7 @@ public class UnlaunchableAppActivity extends Activity
private int mUserId;
private int mReason;
private IntentSender mTarget;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -60,6 +62,7 @@ public class UnlaunchableAppActivity extends Activity
Intent intent = getIntent();
mReason = intent.getIntExtra(EXTRA_UNLAUNCHABLE_REASON, -1);
mUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
mTarget = intent.getParcelableExtra(Intent.EXTRA_INTENT);
if (mUserId == UserHandle.USER_NULL) {
Log.wtf(TAG, "Invalid user id: " + mUserId + ". Stopping.");
@@ -105,6 +108,14 @@ public class UnlaunchableAppActivity extends Activity
public void onClick(DialogInterface dialog, int which) {
if (mReason == UNLAUNCHABLE_REASON_QUIET_MODE && which == DialogInterface.BUTTON_POSITIVE) {
UserManager.get(this).setQuietModeEnabled(mUserId, false);
if (mTarget != null) {
try {
startIntentSenderForResult(mTarget, -1, null, 0, 0, 0);
} catch (IntentSender.SendIntentException e) {
/* ignore */
}
}
}
}
@@ -121,4 +132,10 @@ public class UnlaunchableAppActivity extends Activity
intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
return intent;
}
public static Intent createInQuietModeDialogIntent(int userId, IntentSender target) {
Intent intent = createInQuietModeDialogIntent(userId);
intent.putExtra(Intent.EXTRA_INTENT, target);
return intent;
}
}

View File

@@ -119,7 +119,13 @@ class ActivityStartInterceptor {
if (!mUserManager.isQuietModeEnabled(UserHandle.of(mUserId))) {
return false;
}
mIntent = UnlaunchableAppActivity.createInQuietModeDialogIntent(mUserId);
IIntentSender target = mService.getIntentSenderLocked(
INTENT_SENDER_ACTIVITY, mCallingPackage, mCallingUid, mUserId, null, null, 0,
new Intent[] {mIntent}, new String[] {mResolvedType},
FLAG_CANCEL_CURRENT | FLAG_ONE_SHOT, null);
mIntent = UnlaunchableAppActivity.createInQuietModeDialogIntent(mUserId,
new IntentSender(target));
mCallingPid = mRealCallingPid;
mCallingUid = mRealCallingUid;
mResolvedType = null;