diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/RepeaterService.kt b/mobile/src/main/java/be/mygod/vpnhotspot/RepeaterService.kt index 93d72b02..03b8f8e6 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/RepeaterService.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/RepeaterService.kt @@ -401,7 +401,7 @@ class RepeaterService : Service(), CoroutineScope, WifiP2pManager.ChannelListene } private fun cleanLocked() { if (receiverRegistered) { - unregisterReceiver(receiver) + ensureReceiverUnregistered(receiver) receiverRegistered = false } if (Build.VERSION.SDK_INT >= 28) { diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/TetheringService.kt b/mobile/src/main/java/be/mygod/vpnhotspot/TetheringService.kt index 00004964..4f347cb0 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/TetheringService.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/TetheringService.kt @@ -10,6 +10,7 @@ import be.mygod.vpnhotspot.net.TetheringManager.tetheredIfaces import be.mygod.vpnhotspot.net.monitor.IpNeighbourMonitor import be.mygod.vpnhotspot.util.Event0 import be.mygod.vpnhotspot.util.broadcastReceiver +import be.mygod.vpnhotspot.util.ensureReceiverUnregistered import kotlinx.coroutines.* import java.util.concurrent.ConcurrentHashMap @@ -117,7 +118,7 @@ class TetheringService : IpNeighbourMonitoringService(), CoroutineScope { private fun unregisterReceiver() { if (receiverRegistered) { - unregisterReceiver(receiver) + ensureReceiverUnregistered(receiver) IpNeighbourMonitor.unregisterCallback(this) receiverRegistered = false } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt b/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt index 4d129b70..c42c9155 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt @@ -35,6 +35,12 @@ fun Long.toPluralInt(): Int { return (this % 1000000000).toInt() + 1000000000 } +fun Context.ensureReceiverUnregistered(receiver: BroadcastReceiver) { + try { + unregisterReceiver(receiver) + } catch (_: IllegalArgumentException) { } +} + @SuppressLint("Recycle") fun useParcel(block: (Parcel) -> T) = Parcel.obtain().run { try {