diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index b535fa9a52..0a6c2bd53a 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -8349,7 +8349,15 @@ public class ConnectivityService extends IConnectivityManager.Stub mPendingIntentWakeLock.acquire(); try { if (DBG) log("Sending " + pendingIntent); - pendingIntent.send(mContext, 0, intent, this /* onFinished */, null /* Handler */); + final BroadcastOptions options = BroadcastOptions.makeBasic(); + if (SdkLevel.isAtLeastT()) { + // Explicitly disallow the receiver from starting activities, to prevent apps from + // utilizing the PendingIntent as a backdoor to do this. + options.setPendingIntentBackgroundActivityLaunchAllowed(false); + } + pendingIntent.send(mContext, 0, intent, this /* onFinished */, null /* Handler */, + null /* requiredPermission */, + SdkLevel.isAtLeastT() ? options.toBundle() : null); } catch (PendingIntent.CanceledException e) { if (DBG) log(pendingIntent + " was not sent, it had been canceled."); mPendingIntentWakeLock.release();