From 4888ee8482930338587f2b98de06ff46675052cc Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 1 Jul 2019 20:19:14 +0200 Subject: [PATCH] Prevent crash --- .../eu/faircode/email/ConnectionHelper.java | 68 ++++++++++--------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ConnectionHelper.java b/app/src/main/java/eu/faircode/email/ConnectionHelper.java index 62dd6028cc..1b66b47e2c 100644 --- a/app/src/main/java/eu/faircode/email/ConnectionHelper.java +++ b/app/src/main/java/eu/faircode/email/ConnectionHelper.java @@ -101,41 +101,45 @@ public class ConnectionHelper { boolean rlah = prefs.getBoolean("rlah", true); NetworkState state = new NetworkState(); - Boolean isMetered = isMetered(context); - state.connected = (isMetered != null); - state.unmetered = (isMetered != null && !isMetered); - state.suitable = (isMetered != null && (metered || !isMetered)); - - if (state.connected && !roaming) { - ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { - NetworkInfo ani = (cm == null ? null : cm.getActiveNetworkInfo()); - if (ani != null) - state.roaming = ani.isRoaming(); - } else { - Network active = (cm == null ? null : cm.getActiveNetwork()); - if (active != null) { - NetworkCapabilities caps = cm.getNetworkCapabilities(active); - if (caps != null) - state.roaming = !caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); + try { + Boolean isMetered = isMetered(context); + state.connected = (isMetered != null); + state.unmetered = (isMetered != null && !isMetered); + state.suitable = (isMetered != null && (metered || !isMetered)); + + if (state.connected && !roaming) { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { + NetworkInfo ani = (cm == null ? null : cm.getActiveNetworkInfo()); + if (ani != null) + state.roaming = ani.isRoaming(); + } else { + Network active = (cm == null ? null : cm.getActiveNetwork()); + if (active != null) { + NetworkCapabilities caps = cm.getNetworkCapabilities(active); + if (caps != null) + state.roaming = !caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); + } } - } - if (state.roaming != null && state.roaming && rlah) - try { - TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (tm != null) { - String sim = tm.getSimCountryIso(); - String network = tm.getNetworkCountryIso(); - Log.i("Country SIM=" + sim + " network=" + network); - if (sim != null && network != null && - RLAH_COUNTRY_CODES.contains(sim) && - RLAH_COUNTRY_CODES.contains(network)) - state.roaming = false; + if (state.roaming != null && state.roaming && rlah) + try { + TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + if (tm != null) { + String sim = tm.getSimCountryIso(); + String network = tm.getNetworkCountryIso(); + Log.i("Country SIM=" + sim + " network=" + network); + if (sim != null && network != null && + RLAH_COUNTRY_CODES.contains(sim) && + RLAH_COUNTRY_CODES.contains(network)) + state.roaming = false; + } + } catch (Throwable ex) { + Log.w(ex); } - } catch (Throwable ex) { - Log.w(ex); - } + } + } catch (Throwable ex) { + Log.e(ex); } return state;