Fix Android 14 SecurityException by overriding registerReceiver to include Context.RECEIVER_EXPORTED. Bump version to 23.01.62.

This commit is contained in:
Jannik committed 2026-08-23 19:06:03 +02:00
1 parent a4f8479a08
commit 23c1e3c78f
11 files changed
+114 -43

No files matched your search

@@ -58,4 +58,36 @@ class MainActivity : ReactActivity() {
// because it's doing more than [Activity.moveTaskToBack] in fact.
super.invokeDefaultOnBackPressed()
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?): android.content.Intent? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
super.registerReceiver(receiver, filter, android.content.Context.RECEIVER_EXPORTED)
} else {
super.registerReceiver(receiver, filter)
}
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?, flags: Int): android.content.Intent? {
var newFlags = flags
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
newFlags = newFlags or android.content.Context.RECEIVER_EXPORTED
}
return super.registerReceiver(receiver, filter, newFlags)
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?, broadcastPermission: String?, scheduler: android.os.Handler?): android.content.Intent? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
super.registerReceiver(receiver, filter, broadcastPermission, scheduler, android.content.Context.RECEIVER_EXPORTED)
} else {
super.registerReceiver(receiver, filter, broadcastPermission, scheduler)
}
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?, broadcastPermission: String?, scheduler: android.os.Handler?, flags: Int): android.content.Intent? {
var newFlags = flags
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
newFlags = newFlags or android.content.Context.RECEIVER_EXPORTED
}
return super.registerReceiver(receiver, filter, broadcastPermission, scheduler, newFlags)
}
}
@@ -53,4 +53,36 @@ class MainApplication : Application(), ReactApplication {
super.onConfigurationChanged(newConfig)
ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?): android.content.Intent? {
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
super.registerReceiver(receiver, filter, android.content.Context.RECEIVER_EXPORTED)
} else {
super.registerReceiver(receiver, filter)
}
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?, flags: Int): android.content.Intent? {
var newFlags = flags
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
newFlags = newFlags or android.content.Context.RECEIVER_EXPORTED
}
return super.registerReceiver(receiver, filter, newFlags)
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?, broadcastPermission: String?, scheduler: android.os.Handler?): android.content.Intent? {
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
super.registerReceiver(receiver, filter, broadcastPermission, scheduler, android.content.Context.RECEIVER_EXPORTED)
} else {
super.registerReceiver(receiver, filter, broadcastPermission, scheduler)
}
}
override fun registerReceiver(receiver: android.content.BroadcastReceiver?, filter: android.content.IntentFilter?, broadcastPermission: String?, scheduler: android.os.Handler?, flags: Int): android.content.Intent? {
var newFlags = flags
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
newFlags = newFlags or android.content.Context.RECEIVER_EXPORTED
}
return super.registerReceiver(receiver, filter, broadcastPermission, scheduler, newFlags)
}
}