From 4c705967d20817c55bac73c21701a96e60874da7 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Fri, 12 Jul 2024 14:56:29 -0300 Subject: [PATCH] fix(android): targetSdk 34 registerBroadcastReceiver (#10585) --- packages/core/application/application.android.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/core/application/application.android.ts b/packages/core/application/application.android.ts index 51c3ab338..58e9cc0d6 100644 --- a/packages/core/application/application.android.ts +++ b/packages/core/application/application.android.ts @@ -2,6 +2,7 @@ import { profile } from '../profiling'; import { View } from '../ui/core/view'; import { isEmbedded } from '../ui/embedding'; import { AndroidActivityCallbacks, NavigationEntry } from '../ui/frame/frame-common'; +import { SDK_VERSION } from '../utils/constants'; import type { AndroidApplication as IAndroidApplication } from './application'; import { ApplicationCommon } from './application-common'; import type { AndroidActivityBundleEventData, AndroidActivityEventData, ApplicationEventData } from './application-interfaces'; @@ -442,10 +443,18 @@ export class AndroidApplication extends ApplicationCommon implements IAndroidApp return this._packageName; } - public registerBroadcastReceiver(intentFilter: string, onReceiveCallback: (context: android.content.Context, intent: android.content.Intent) => void): void { + // Possible flags are: + // RECEIVER_EXPORTED (2) + // RECEIVER_NOT_EXPORTED (4) + // RECEIVER_VISIBLE_TO_INSTANT_APPS (1) + public registerBroadcastReceiver(intentFilter: string, onReceiveCallback: (context: android.content.Context, intent: android.content.Intent) => void, flags = 2): void { const registerFunc = (context: android.content.Context) => { const receiver: android.content.BroadcastReceiver = new (initBroadcastReceiver())(onReceiveCallback); - context.registerReceiver(receiver, new android.content.IntentFilter(intentFilter)); + if (SDK_VERSION >= 26) { + context.registerReceiver(receiver, new android.content.IntentFilter(intentFilter), flags); + } else { + context.registerReceiver(receiver, new android.content.IntentFilter(intentFilter)); + } this._registeredReceivers[intentFilter] = receiver; };