diff --git a/bramble-android/src/main/java/org/briarproject/bramble/battery/AndroidBatteryManager.java b/bramble-android/src/main/java/org/briarproject/bramble/battery/AndroidBatteryManager.java index 2f3a2dde5..2e370013e 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/battery/AndroidBatteryManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/battery/AndroidBatteryManager.java @@ -53,7 +53,7 @@ class AndroidBatteryManager implements BatteryManager, Service { public boolean isCharging() { // Get the sticky intent for ACTION_BATTERY_CHANGED IntentFilter filter = new IntentFilter(ACTION_BATTERY_CHANGED); - Intent i = registerReceiver(appContext, null, filter); + Intent i = registerReceiver(appContext, null, filter, false); if (i == null) return false; int status = i.getIntExtra(EXTRA_PLUGGED, 0); return status != 0; @@ -72,7 +72,7 @@ class AndroidBatteryManager implements BatteryManager, Service { filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED); filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED); } - registerReceiver(appContext, batteryReceiver, filter); + registerReceiver(appContext, batteryReceiver, filter, false); } @Override diff --git a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java index 38f76bd13..615a065e3 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java @@ -104,7 +104,7 @@ class AndroidNetworkManager implements NetworkManager, Service { filter.addAction(WIFI_AP_STATE_CHANGED_ACTION); filter.addAction(WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); if (SDK_INT >= 23) filter.addAction(ACTION_DEVICE_IDLE_MODE_CHANGED); - registerReceiver(app, networkStateReceiver, filter); + registerReceiver(app, networkStateReceiver, filter, false); } @Override diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java index f1f2f498d..d120c2aec 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java @@ -113,7 +113,7 @@ class AndroidBluetoothPlugin extends filter.addAction(ACTION_STATE_CHANGED); filter.addAction(ACTION_SCAN_MODE_CHANGED); receiver = new BluetoothStateReceiver(); - registerReceiver(app, receiver, filter); + registerReceiver(app, receiver, filter, true); } @Override @@ -238,7 +238,7 @@ class AndroidBluetoothPlugin extends filter.addAction(ACTION_DISCOVERY_STARTED); filter.addAction(ACTION_DISCOVERY_FINISHED); filter.addAction(ACTION_FOUND); - registerReceiver(app, receiver, filter); + registerReceiver(app, receiver, filter, true); try { if (adapter.startDiscovery()) { long now = clock.currentTimeMillis(); diff --git a/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java b/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java index ce7f34e3e..e8225edbd 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java @@ -25,6 +25,7 @@ import javax.annotation.Nullable; import static android.Manifest.permission.BLUETOOTH_CONNECT; import static android.app.PendingIntent.FLAG_IMMUTABLE; import static android.content.Context.MODE_PRIVATE; +import static android.content.Context.RECEIVER_EXPORTED; import static android.content.Context.RECEIVER_NOT_EXPORTED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Build.VERSION.SDK_INT; @@ -168,10 +169,11 @@ public class AndroidUtils { @Nullable @SuppressLint("UnspecifiedRegisterReceiverFlag") // we specify where needed public static Intent registerReceiver(Context ctx, - @Nullable BroadcastReceiver receiver, IntentFilter filter) { + @Nullable BroadcastReceiver receiver, IntentFilter filter, + boolean export) { if (SDK_INT >= 33) { return ctx.registerReceiver(receiver, filter, - RECEIVER_NOT_EXPORTED); + export ? RECEIVER_EXPORTED : RECEIVER_NOT_EXPORTED); } else { return ctx.registerReceiver(receiver, filter); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java index 3639a02f1..9e6ee68ae 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java @@ -176,7 +176,7 @@ public class BriarService extends Service { filter.addAction("android.intent.action.QUICKBOOT_POWEROFF"); filter.addAction("com.htc.intent.action.QUICKBOOT_POWEROFF"); AndroidUtils.registerReceiver(getApplicationContext(), receiver, - filter); + filter, false); }, "LifecycleStartup"); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java index fdf68d780..9379d17da 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/DozeWatchdogImpl.java @@ -49,7 +49,7 @@ class DozeWatchdogImpl implements DozeWatchdog, Service { filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED); filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED); } - registerReceiver(appContext, receiver, filter); + registerReceiver(appContext, receiver, filter, false); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java index 0dae58818..843dcc4ed 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java @@ -208,7 +208,7 @@ class ScreenFilterMonitorImpl implements ScreenFilterMonitor, Service { filter.addAction(ACTION_PACKAGE_REPLACED); filter.addDataScheme("package"); receiver = new PackageBroadcastReceiver(); - registerReceiver(app, receiver, filter); + registerReceiver(app, receiver, filter, false); cachedApps = null; }); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java index 3bfa1d5e4..6f5db55cb 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java @@ -209,7 +209,7 @@ class AddNearbyContactViewModel extends AndroidViewModel qrCodeDecoder = new QrCodeDecoder(androidExecutor, ioExecutor, this); eventBus.addListener(this); IntentFilter filter = new IntentFilter(ACTION_SCAN_MODE_CHANGED); - registerReceiver(getApplication(), bluetoothReceiver, filter); + registerReceiver(getApplication(), bluetoothReceiver, filter, false); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java index 8f41a4b5c..afa1cd19a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java @@ -97,7 +97,8 @@ public class PluginViewModel extends DbViewModel implements EventListener { this.eventBus = eventBus; eventBus.addListener(this); receiver = new BluetoothStateReceiver(); - registerReceiver(app, receiver, new IntentFilter(ACTION_STATE_CHANGED)); + registerReceiver(app, receiver, new IntentFilter(ACTION_STATE_CHANGED), + false); networkStatus.setValue(networkManager.getNetworkStatus()); torPluginState.setValue(getTransportState(TorConstants.ID)); wifiPluginState.setValue(getTransportState(LanTcpConstants.ID));