Skip to content

Commit 4d5a59b

Browse files
authored
Merge pull request #67 from NordicPlayground/broadcast-receivers-fix
Adding flags to broadcast received registration
2 parents 75e06e0 + 4b604d8 commit 4d5a59b

File tree

5 files changed

+14
-5
lines changed

5 files changed

+14
-5
lines changed

core/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,5 @@ android {
5959
dependencies {
6060
implementation(platform(libs.androidx.compose.bom))
6161
implementation(libs.androidx.compose.ui)
62+
implementation(libs.androidx.core)
6263
}

core/src/main/java/no/nordicsemi/android/common/core/BroadcastReceiver+Compose.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,15 @@ import android.content.IntentFilter
3939
import androidx.compose.runtime.Composable
4040
import androidx.compose.runtime.DisposableEffect
4141
import androidx.compose.ui.platform.LocalContext
42+
import androidx.core.content.ContextCompat
4243

4344
@SuppressLint("ComposableNaming")
4445
@Composable
45-
fun registerReceiver(intentFilter: IntentFilter, onEvent: (Intent?) -> Unit) {
46+
fun registerReceiver(
47+
intentFilter: IntentFilter,
48+
@ContextCompat.RegisterReceiverFlags flags: Int = ContextCompat.RECEIVER_NOT_EXPORTED,
49+
onEvent: (Intent?) -> Unit
50+
) {
4651
val context = LocalContext.current
4752

4853
DisposableEffect(context) {
@@ -51,7 +56,7 @@ fun registerReceiver(intentFilter: IntentFilter, onEvent: (Intent?) -> Unit) {
5156
onEvent(intent)
5257
}
5358
}
54-
context.registerReceiver(broadcast, intentFilter)
59+
ContextCompat.registerReceiver(context, broadcast, intentFilter, flags)
5560
onDispose {
5661
context.unregisterReceiver(broadcast)
5762
}

permissions-ble/src/main/java/no/nordicsemi/android/common/permissions/ble/bluetooth/BluetoothStateManager.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import android.content.BroadcastReceiver
3636
import android.content.Context
3737
import android.content.Intent
3838
import android.content.IntentFilter
39+
import androidx.core.content.ContextCompat
3940
import dagger.hilt.android.qualifiers.ApplicationContext
4041
import kotlinx.coroutines.channels.awaitClose
4142
import kotlinx.coroutines.flow.callbackFlow
@@ -67,7 +68,7 @@ class BluetoothStateManager @Inject constructor(
6768
addAction(BluetoothAdapter.ACTION_STATE_CHANGED)
6869
addAction(REFRESH_PERMISSIONS)
6970
}
70-
context.registerReceiver(bluetoothStateChangeHandler, filter)
71+
ContextCompat.registerReceiver(context, bluetoothStateChangeHandler, filter, ContextCompat.RECEIVER_NOT_EXPORTED)
7172
awaitClose {
7273
context.unregisterReceiver(bluetoothStateChangeHandler)
7374
}

permissions-ble/src/main/java/no/nordicsemi/android/common/permissions/ble/location/LocationStateManager.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import android.content.Context
3636
import android.content.Intent
3737
import android.content.IntentFilter
3838
import android.location.LocationManager
39+
import androidx.core.content.ContextCompat
3940
import androidx.core.location.LocationManagerCompat
4041
import dagger.hilt.android.qualifiers.ApplicationContext
4142
import kotlinx.coroutines.channels.awaitClose
@@ -69,7 +70,7 @@ internal class LocationStateManager @Inject constructor(
6970
addAction(LocationManager.MODE_CHANGED_ACTION)
7071
addAction(REFRESH_PERMISSIONS)
7172
}
72-
context.registerReceiver(locationStateChangeHandler, filter)
73+
ContextCompat.registerReceiver(context, locationStateChangeHandler, filter, ContextCompat.RECEIVER_NOT_EXPORTED)
7374
awaitClose {
7475
context.unregisterReceiver(locationStateChangeHandler)
7576
}

permissions-nfc/src/main/java/no/nordicsemi/android/common/permissions/nfc/repostory/NfcStateManager.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import android.content.Context
3636
import android.content.Intent
3737
import android.content.IntentFilter
3838
import android.nfc.NfcAdapter
39+
import androidx.core.content.ContextCompat
3940
import dagger.hilt.android.qualifiers.ApplicationContext
4041
import kotlinx.coroutines.channels.awaitClose
4142
import kotlinx.coroutines.flow.callbackFlow
@@ -72,7 +73,7 @@ internal class NfcStateManager @Inject constructor(
7273
val filter = IntentFilter().apply {
7374
addAction(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED)
7475
}
75-
context.registerReceiver(nfcStateChangeHandler, filter)
76+
ContextCompat.registerReceiver(context, nfcStateChangeHandler, filter, ContextCompat.RECEIVER_NOT_EXPORTED)
7677
awaitClose {
7778
context.unregisterReceiver(nfcStateChangeHandler)
7879
}

0 commit comments

Comments
 (0)