diff --git a/packages/connectivity_plus/connectivity_plus/android/src/main/java/dev/fluttercommunity/plus/connectivity/ConnectivityBroadcastReceiver.java b/packages/connectivity_plus/connectivity_plus/android/src/main/java/dev/fluttercommunity/plus/connectivity/ConnectivityBroadcastReceiver.java index 324d3d234d..55439bc5d6 100644 --- a/packages/connectivity_plus/connectivity_plus/android/src/main/java/dev/fluttercommunity/plus/connectivity/ConnectivityBroadcastReceiver.java +++ b/packages/connectivity_plus/connectivity_plus/android/src/main/java/dev/fluttercommunity/plus/connectivity/ConnectivityBroadcastReceiver.java @@ -14,6 +14,7 @@ import android.os.Build; import android.os.Handler; import android.os.Looper; +import androidx.annotation.RequiresApi; import io.flutter.plugin.common.EventChannel; import java.util.List; @@ -86,19 +87,33 @@ public void onLost(Network network) { @Override public void onCancel(Object arguments) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - if (networkCallback != null) { - connectivity.getConnectivityManager().unregisterNetworkCallback(networkCallback); - networkCallback = null; - } + safelyUnregisterNetworkCallback(); } else { + safelyUnregisterReceiver(); + } + } + + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + void safelyUnregisterNetworkCallback() { + if (networkCallback != null) { try { - context.unregisterReceiver(this); + connectivity.getConnectivityManager().unregisterNetworkCallback(networkCallback); } catch (Exception e) { - // listen never called, ignore the error + // ignore the error + } finally { + networkCallback = null; } } } + void safelyUnregisterReceiver() { + try { + context.unregisterReceiver(this); + } catch (Exception e) { + // listen never called, ignore the error + } + } + @Override public void onReceive(Context context, Intent intent) { if (events != null) {