Loading core/java/android/app/Activity.java +4 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app; import static android.Manifest.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS; import static java.lang.Character.MIN_VALUE; import android.annotation.CallSuper; Loading Loading @@ -4671,6 +4672,7 @@ public class Activity extends ContextThemeWrapper * their launch had come from the original activity. * @param intent The Intent to start. * @param options ActivityOptions or null. * @param permissionToken Token received from the system that permits this call to be made. * @param ignoreTargetSecurity If true, the activity manager will not check whether the * caller it is doing the start is, is actually allowed to start the target activity. * If you set this to true, you must set an explicit component in the Intent and do any Loading @@ -4679,7 +4681,7 @@ public class Activity extends ContextThemeWrapper * @hide */ public void startActivityAsCaller(Intent intent, @Nullable Bundle options, boolean ignoreTargetSecurity, int userId) { IBinder permissionToken, boolean ignoreTargetSecurity, int userId) { if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } Loading @@ -4687,7 +4689,7 @@ public class Activity extends ContextThemeWrapper Instrumentation.ActivityResult ar = mInstrumentation.execStartActivityAsCaller( this, mMainThread.getApplicationThread(), mToken, this, intent, -1, options, ignoreTargetSecurity, userId); intent, -1, options, permissionToken, ignoreTargetSecurity, userId); if (ar != null) { mMainThread.sendActivityResult( mToken, mEmbeddedID, -1, ar.getResultCode(), Loading core/java/android/app/ActivityManager.java +25 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,31 @@ public class ActivityManager { */ public static final int INTENT_SENDER_FOREGROUND_SERVICE = 5; /** * Extra included on intents that are delegating the call to * ActivityManager#startActivityAsCaller to another app. This token is necessary for that call * to succeed. Type is IBinder. * @hide */ public static final String EXTRA_PERMISSION_TOKEN = "android.app.extra.PERMISSION_TOKEN"; /** * Extra included on intents that contain an EXTRA_INTENT, with options that the contained * intent may want to be started with. Type is Bundle. * TODO: remove once the ChooserActivity moves to systemui * @hide */ public static final String EXTRA_OPTIONS = "android.app.extra.OPTIONS"; /** * Extra included on intents that contain an EXTRA_INTENT, use this boolean value for the * parameter of the same name when starting the contained intent. * TODO: remove once the ChooserActivity moves to systemui * @hide */ public static final String EXTRA_IGNORE_TARGET_SECURITY = "android.app.extra.EXTRA_IGNORE_TARGET_SECURITY"; /** @hide User operation call: success! */ public static final int USER_OP_SUCCESS = 0; Loading core/java/android/app/IActivityManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -438,10 +438,11 @@ interface IActivityManager { boolean isTopOfTask(in IBinder token); void notifyLaunchTaskBehindComplete(in IBinder token); void notifyEnterAnimationComplete(in IBinder token); IBinder requestStartActivityPermissionToken(in IBinder delegatorToken); int startActivityAsCaller(in IApplicationThread caller, in String callingPackage, in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options, boolean ignoreTargetSecurity, int userId); in IBinder permissionToken, boolean ignoreTargetSecurity, int userId); int addAppTask(in IBinder activityToken, in Intent intent, in ActivityManager.TaskDescription description, in Bitmap thumbnail); Point getAppTaskThumbnailSize(); Loading core/java/android/app/Instrumentation.java +4 −3 Original line number Diff line number Diff line Loading @@ -1874,8 +1874,8 @@ public class Instrumentation { */ public ActivityResult execStartActivityAsCaller( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options, boolean ignoreTargetSecurity, int userId) { Intent intent, int requestCode, Bundle options, IBinder permissionToken, boolean ignoreTargetSecurity, int userId) { IApplicationThread whoThread = (IApplicationThread) contextThread; if (mActivityMonitors != null) { synchronized (mSync) { Loading Loading @@ -1906,7 +1906,8 @@ public class Instrumentation { .startActivityAsCaller(whoThread, who.getBasePackageName(), intent, intent.resolveTypeIfNeeded(who.getContentResolver()), token, target != null ? target.mEmbeddedID : null, requestCode, 0, null, options, ignoreTargetSecurity, userId); requestCode, 0, null, options, permissionToken, ignoreTargetSecurity, userId); checkStartActivityResult(result, intent); } catch (RemoteException e) { throw new RuntimeException("Failure from system", e); Loading core/java/com/android/internal/app/ChooserActivity.java +2 −3 Original line number Diff line number Diff line Loading @@ -841,7 +841,7 @@ public class ChooserActivity extends ResolverActivity { } @Override public boolean startAsCaller(Activity activity, Bundle options, int userId) { public boolean startAsCaller(ResolverActivity activity, Bundle options, int userId) { final Intent intent = getBaseIntentToSend(); if (intent == null) { return false; Loading @@ -860,8 +860,7 @@ public class ChooserActivity extends ResolverActivity { final boolean ignoreTargetSecurity = mSourceInfo != null && mSourceInfo.getResolvedComponentName().getPackageName() .equals(mChooserTarget.getComponentName().getPackageName()); activity.startActivityAsCaller(intent, options, ignoreTargetSecurity, userId); return true; return activity.startAsCallerImpl(intent, options, ignoreTargetSecurity, userId); } @Override Loading Loading
core/java/android/app/Activity.java +4 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app; import static android.Manifest.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS; import static java.lang.Character.MIN_VALUE; import android.annotation.CallSuper; Loading Loading @@ -4671,6 +4672,7 @@ public class Activity extends ContextThemeWrapper * their launch had come from the original activity. * @param intent The Intent to start. * @param options ActivityOptions or null. * @param permissionToken Token received from the system that permits this call to be made. * @param ignoreTargetSecurity If true, the activity manager will not check whether the * caller it is doing the start is, is actually allowed to start the target activity. * If you set this to true, you must set an explicit component in the Intent and do any Loading @@ -4679,7 +4681,7 @@ public class Activity extends ContextThemeWrapper * @hide */ public void startActivityAsCaller(Intent intent, @Nullable Bundle options, boolean ignoreTargetSecurity, int userId) { IBinder permissionToken, boolean ignoreTargetSecurity, int userId) { if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } Loading @@ -4687,7 +4689,7 @@ public class Activity extends ContextThemeWrapper Instrumentation.ActivityResult ar = mInstrumentation.execStartActivityAsCaller( this, mMainThread.getApplicationThread(), mToken, this, intent, -1, options, ignoreTargetSecurity, userId); intent, -1, options, permissionToken, ignoreTargetSecurity, userId); if (ar != null) { mMainThread.sendActivityResult( mToken, mEmbeddedID, -1, ar.getResultCode(), Loading
core/java/android/app/ActivityManager.java +25 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,31 @@ public class ActivityManager { */ public static final int INTENT_SENDER_FOREGROUND_SERVICE = 5; /** * Extra included on intents that are delegating the call to * ActivityManager#startActivityAsCaller to another app. This token is necessary for that call * to succeed. Type is IBinder. * @hide */ public static final String EXTRA_PERMISSION_TOKEN = "android.app.extra.PERMISSION_TOKEN"; /** * Extra included on intents that contain an EXTRA_INTENT, with options that the contained * intent may want to be started with. Type is Bundle. * TODO: remove once the ChooserActivity moves to systemui * @hide */ public static final String EXTRA_OPTIONS = "android.app.extra.OPTIONS"; /** * Extra included on intents that contain an EXTRA_INTENT, use this boolean value for the * parameter of the same name when starting the contained intent. * TODO: remove once the ChooserActivity moves to systemui * @hide */ public static final String EXTRA_IGNORE_TARGET_SECURITY = "android.app.extra.EXTRA_IGNORE_TARGET_SECURITY"; /** @hide User operation call: success! */ public static final int USER_OP_SUCCESS = 0; Loading
core/java/android/app/IActivityManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -438,10 +438,11 @@ interface IActivityManager { boolean isTopOfTask(in IBinder token); void notifyLaunchTaskBehindComplete(in IBinder token); void notifyEnterAnimationComplete(in IBinder token); IBinder requestStartActivityPermissionToken(in IBinder delegatorToken); int startActivityAsCaller(in IApplicationThread caller, in String callingPackage, in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options, boolean ignoreTargetSecurity, int userId); in IBinder permissionToken, boolean ignoreTargetSecurity, int userId); int addAppTask(in IBinder activityToken, in Intent intent, in ActivityManager.TaskDescription description, in Bitmap thumbnail); Point getAppTaskThumbnailSize(); Loading
core/java/android/app/Instrumentation.java +4 −3 Original line number Diff line number Diff line Loading @@ -1874,8 +1874,8 @@ public class Instrumentation { */ public ActivityResult execStartActivityAsCaller( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options, boolean ignoreTargetSecurity, int userId) { Intent intent, int requestCode, Bundle options, IBinder permissionToken, boolean ignoreTargetSecurity, int userId) { IApplicationThread whoThread = (IApplicationThread) contextThread; if (mActivityMonitors != null) { synchronized (mSync) { Loading Loading @@ -1906,7 +1906,8 @@ public class Instrumentation { .startActivityAsCaller(whoThread, who.getBasePackageName(), intent, intent.resolveTypeIfNeeded(who.getContentResolver()), token, target != null ? target.mEmbeddedID : null, requestCode, 0, null, options, ignoreTargetSecurity, userId); requestCode, 0, null, options, permissionToken, ignoreTargetSecurity, userId); checkStartActivityResult(result, intent); } catch (RemoteException e) { throw new RuntimeException("Failure from system", e); Loading
core/java/com/android/internal/app/ChooserActivity.java +2 −3 Original line number Diff line number Diff line Loading @@ -841,7 +841,7 @@ public class ChooserActivity extends ResolverActivity { } @Override public boolean startAsCaller(Activity activity, Bundle options, int userId) { public boolean startAsCaller(ResolverActivity activity, Bundle options, int userId) { final Intent intent = getBaseIntentToSend(); if (intent == null) { return false; Loading @@ -860,8 +860,7 @@ public class ChooserActivity extends ResolverActivity { final boolean ignoreTargetSecurity = mSourceInfo != null && mSourceInfo.getResolvedComponentName().getPackageName() .equals(mChooserTarget.getComponentName().getPackageName()); activity.startActivityAsCaller(intent, options, ignoreTargetSecurity, userId); return true; return activity.startAsCallerImpl(intent, options, ignoreTargetSecurity, userId); } @Override Loading