diff options
| author | Nicolas Prevot <nprevot@google.com> | 2015-07-01 16:31:48 +0100 |
|---|---|---|
| committer | Nicolas Prevot <nprevot@google.com> | 2015-07-01 17:05:18 +0100 |
| commit | 107f7b7becdb5fe6d735a4f1355eb3421f068fb0 (patch) | |
| tree | 7ea368ade9a9337154b521d29de5255b64f850b8 /core/java | |
| parent | e40d7a632668a3813a443195ba8e2146407a0517 (diff) | |
Fix the case where an intent bounces several times between users.
An intent may bounce several times between users.
In this case, we want mContentUserHint to refer to the original
user.
BUG:19656340
Change-Id: I22a35fab0c228140dcb223899f5e38ff33ee5aed
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/content/Intent.java | 8 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/IntentForwarderActivity.java | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index b1d80f021b50..c9f9b565751a 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -6181,8 +6181,12 @@ public class Intent implements Parcelable, Cloneable { * who sent the intent. * @hide */ - public void setContentUserHint(int contentUserHint) { - mContentUserHint = contentUserHint; + public void prepareToLeaveUser(int userId) { + // If mContentUserHint is not UserHandle.USER_CURRENT, the intent has already left a user. + // We want mContentUserHint to refer to the original user, so don't do anything. + if (mContentUserHint == UserHandle.USER_CURRENT) { + mContentUserHint = userId; + } } /** diff --git a/core/java/com/android/internal/app/IntentForwarderActivity.java b/core/java/com/android/internal/app/IntentForwarderActivity.java index f598828d712f..233bee3b5bc0 100644 --- a/core/java/com/android/internal/app/IntentForwarderActivity.java +++ b/core/java/com/android/internal/app/IntentForwarderActivity.java @@ -87,9 +87,9 @@ public class IntentForwarderActivity extends Activity { if (canForward(newIntent, targetUserId)) { if (newIntent.getAction().equals(Intent.ACTION_CHOOSER)) { Intent innerIntent = (Intent) newIntent.getParcelableExtra(Intent.EXTRA_INTENT); - innerIntent.setContentUserHint(callingUserId); + innerIntent.prepareToLeaveUser(callingUserId); } else { - newIntent.setContentUserHint(callingUserId); + newIntent.prepareToLeaveUser(callingUserId); } final android.content.pm.ResolveInfo ri = getPackageManager().resolveActivityAsUser( |
