Loading core/java/android/content/IntentSender.java +40 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package android.content; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityOptions; import android.compat.annotation.UnsupportedAppUsage; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -154,7 +156,7 @@ public class IntentSender implements Parcelable { */ public void sendIntent(Context context, int code, Intent intent, OnFinished onFinished, Handler handler) throws SendIntentException { sendIntent(context, code, intent, onFinished, handler, null); sendIntent(context, code, intent, onFinished, handler, null, null /* options */); } /** Loading Loading @@ -186,6 +188,42 @@ public class IntentSender implements Parcelable { public void sendIntent(Context context, int code, Intent intent, OnFinished onFinished, Handler handler, String requiredPermission) throws SendIntentException { sendIntent(context, code, intent, onFinished, handler, requiredPermission, null /* options */); } /** * Perform the operation associated with this IntentSender, allowing the * caller to specify information about the Intent to use and be notified * when the send has completed. * * @param context The Context of the caller. This may be null if * <var>intent</var> is also null. * @param code Result code to supply back to the IntentSender's target. * @param intent Additional Intent data. See {@link Intent#fillIn * Intent.fillIn()} for information on how this is applied to the * original Intent. Use null to not modify the original Intent. * @param onFinished The object to call back on when the send has * completed, or null for no callback. * @param handler Handler identifying the thread on which the callback * should happen. If null, the callback will happen from the thread * pool of the process. * @param requiredPermission Name of permission that a recipient of the PendingIntent * is required to hold. This is only valid for broadcast intents, and * corresponds to the permission argument in * {@link Context#sendBroadcast(Intent, String) Context.sendOrderedBroadcast(Intent, String)}. * If null, no permission is required. * @param options Additional options the caller would like to provide to modify the sending * behavior. May be built from an {@link ActivityOptions} to apply to an activity start. * * @throws SendIntentException Throws CanceledIntentException if the IntentSender * is no longer allowing more intents to be sent through it. * @hide */ public void sendIntent(Context context, int code, Intent intent, OnFinished onFinished, Handler handler, String requiredPermission, @Nullable Bundle options) throws SendIntentException { try { String resolvedType = intent != null ? intent.resolveTypeIfNeeded(context.getContentResolver()) Loading @@ -195,7 +233,7 @@ public class IntentSender implements Parcelable { onFinished != null ? new FinishedDispatcher(this, onFinished, handler) : null, requiredPermission, null); requiredPermission, options); if (res < 0) { throw new SendIntentException(); } Loading services/core/java/com/android/server/pm/PackageInstallerService.java +9 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.Manifest; import android.app.ActivityManager; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.BroadcastOptions; import android.app.Notification; import android.app.NotificationManager; import android.app.PackageDeleteObserver; Loading Loading @@ -1140,7 +1141,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements PackageInstaller.STATUS_PENDING_USER_ACTION); fillIn.putExtra(Intent.EXTRA_INTENT, intent); try { mTarget.sendIntent(mContext, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mTarget.sendIntent(mContext, 0, fillIn, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException ignored) { } } Loading @@ -1165,7 +1169,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements PackageManager.deleteStatusToString(returnCode, msg)); fillIn.putExtra(PackageInstaller.EXTRA_LEGACY_STATUS, returnCode); try { mTarget.sendIntent(mContext, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mTarget.sendIntent(mContext, 0, fillIn, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException ignored) { } } Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +28 −6 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import static com.android.server.pm.PackageInstallerService.prepareStageDir; import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.BroadcastOptions; import android.app.Notification; import android.app.NotificationManager; import android.app.admin.DevicePolicyEventLogger; Loading Loading @@ -1280,13 +1281,21 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { try { intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, PackageInstallerSession.this.sessionId); mStatusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mStatusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignore) { } } } else if (PackageInstaller.STATUS_PENDING_USER_ACTION == status) { try { mStatusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mStatusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignore) { } } else { // failure, let's forward and clean up this session. Loading @@ -1294,7 +1303,11 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { PackageInstallerSession.this.sessionId); mChildSessionsRemaining.clear(); // we're done. Don't send any more. try { mStatusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mStatusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignore) { } } Loading Loading @@ -3231,7 +3244,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_PENDING_USER_ACTION); fillIn.putExtra(Intent.EXTRA_INTENT, intent); try { target.sendIntent(context, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); target.sendIntent(context, 0, fillIn, null /* onFinished */, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignored) { } } Loading Loading @@ -3271,7 +3287,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } try { target.sendIntent(context, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); target.sendIntent(context, 0, fillIn, null /* onFinished */, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignored) { } } Loading @@ -3297,7 +3316,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { intent.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, "Staging Image Not Ready"); } try { statusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); statusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignored) { } } Loading services/core/java/com/android/server/pm/PackageManagerService.java +8 −2 Original line number Diff line number Diff line Loading @@ -5050,7 +5050,10 @@ public class PackageManagerService extends IPackageManager.Stub } if (pi != null) { try { pi.sendIntent(null, success ? 1 : 0, null, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); pi.sendIntent(null, success ? 1 : 0, null /* intent */, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException e) { Slog.w(TAG, e); } Loading Loading @@ -13309,7 +13312,10 @@ public class PackageManagerService extends IPackageManager.Stub fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageManager.installStatusToPublicStatus(returnCode)); try { target.sendIntent(context, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); target.sendIntent(context, 0, fillIn, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException ignored) { } } Loading
core/java/android/content/IntentSender.java +40 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package android.content; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityOptions; import android.compat.annotation.UnsupportedAppUsage; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -154,7 +156,7 @@ public class IntentSender implements Parcelable { */ public void sendIntent(Context context, int code, Intent intent, OnFinished onFinished, Handler handler) throws SendIntentException { sendIntent(context, code, intent, onFinished, handler, null); sendIntent(context, code, intent, onFinished, handler, null, null /* options */); } /** Loading Loading @@ -186,6 +188,42 @@ public class IntentSender implements Parcelable { public void sendIntent(Context context, int code, Intent intent, OnFinished onFinished, Handler handler, String requiredPermission) throws SendIntentException { sendIntent(context, code, intent, onFinished, handler, requiredPermission, null /* options */); } /** * Perform the operation associated with this IntentSender, allowing the * caller to specify information about the Intent to use and be notified * when the send has completed. * * @param context The Context of the caller. This may be null if * <var>intent</var> is also null. * @param code Result code to supply back to the IntentSender's target. * @param intent Additional Intent data. See {@link Intent#fillIn * Intent.fillIn()} for information on how this is applied to the * original Intent. Use null to not modify the original Intent. * @param onFinished The object to call back on when the send has * completed, or null for no callback. * @param handler Handler identifying the thread on which the callback * should happen. If null, the callback will happen from the thread * pool of the process. * @param requiredPermission Name of permission that a recipient of the PendingIntent * is required to hold. This is only valid for broadcast intents, and * corresponds to the permission argument in * {@link Context#sendBroadcast(Intent, String) Context.sendOrderedBroadcast(Intent, String)}. * If null, no permission is required. * @param options Additional options the caller would like to provide to modify the sending * behavior. May be built from an {@link ActivityOptions} to apply to an activity start. * * @throws SendIntentException Throws CanceledIntentException if the IntentSender * is no longer allowing more intents to be sent through it. * @hide */ public void sendIntent(Context context, int code, Intent intent, OnFinished onFinished, Handler handler, String requiredPermission, @Nullable Bundle options) throws SendIntentException { try { String resolvedType = intent != null ? intent.resolveTypeIfNeeded(context.getContentResolver()) Loading @@ -195,7 +233,7 @@ public class IntentSender implements Parcelable { onFinished != null ? new FinishedDispatcher(this, onFinished, handler) : null, requiredPermission, null); requiredPermission, options); if (res < 0) { throw new SendIntentException(); } Loading
services/core/java/com/android/server/pm/PackageInstallerService.java +9 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.Manifest; import android.app.ActivityManager; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.BroadcastOptions; import android.app.Notification; import android.app.NotificationManager; import android.app.PackageDeleteObserver; Loading Loading @@ -1140,7 +1141,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements PackageInstaller.STATUS_PENDING_USER_ACTION); fillIn.putExtra(Intent.EXTRA_INTENT, intent); try { mTarget.sendIntent(mContext, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mTarget.sendIntent(mContext, 0, fillIn, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException ignored) { } } Loading @@ -1165,7 +1169,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements PackageManager.deleteStatusToString(returnCode, msg)); fillIn.putExtra(PackageInstaller.EXTRA_LEGACY_STATUS, returnCode); try { mTarget.sendIntent(mContext, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mTarget.sendIntent(mContext, 0, fillIn, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException ignored) { } } Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +28 −6 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import static com.android.server.pm.PackageInstallerService.prepareStageDir; import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.BroadcastOptions; import android.app.Notification; import android.app.NotificationManager; import android.app.admin.DevicePolicyEventLogger; Loading Loading @@ -1280,13 +1281,21 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { try { intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, PackageInstallerSession.this.sessionId); mStatusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mStatusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignore) { } } } else if (PackageInstaller.STATUS_PENDING_USER_ACTION == status) { try { mStatusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mStatusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignore) { } } else { // failure, let's forward and clean up this session. Loading @@ -1294,7 +1303,11 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { PackageInstallerSession.this.sessionId); mChildSessionsRemaining.clear(); // we're done. Don't send any more. try { mStatusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); mStatusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignore) { } } Loading Loading @@ -3231,7 +3244,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_PENDING_USER_ACTION); fillIn.putExtra(Intent.EXTRA_INTENT, intent); try { target.sendIntent(context, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); target.sendIntent(context, 0, fillIn, null /* onFinished */, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignored) { } } Loading Loading @@ -3271,7 +3287,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } try { target.sendIntent(context, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); target.sendIntent(context, 0, fillIn, null /* onFinished */, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignored) { } } Loading @@ -3297,7 +3316,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { intent.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, "Staging Image Not Ready"); } try { statusReceiver.sendIntent(mContext, 0, intent, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); statusReceiver.sendIntent(mContext, 0, intent, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (IntentSender.SendIntentException ignored) { } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +8 −2 Original line number Diff line number Diff line Loading @@ -5050,7 +5050,10 @@ public class PackageManagerService extends IPackageManager.Stub } if (pi != null) { try { pi.sendIntent(null, success ? 1 : 0, null, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); pi.sendIntent(null, success ? 1 : 0, null /* intent */, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException e) { Slog.w(TAG, e); } Loading Loading @@ -13309,7 +13312,10 @@ public class PackageManagerService extends IPackageManager.Stub fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageManager.installStatusToPublicStatus(returnCode)); try { target.sendIntent(context, 0, fillIn, null, null); final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setPendingIntentBackgroundActivityLaunchAllowed(false); target.sendIntent(context, 0, fillIn, null /* onFinished*/, null /* handler */, null /* requiredPermission */, options.toBundle()); } catch (SendIntentException ignored) { } }