diff --git a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java index d0bf7618..27825970 100644 --- a/src/org/kde/kdeconnect/Helpers/NetworkHelper.java +++ b/src/org/kde/kdeconnect/Helpers/NetworkHelper.java @@ -18,34 +18,39 @@ public class NetworkHelper { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { return false; //No good way to know it } - boolean mobile = false; - final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - Network[] networks = connMgr.getAllNetworks(); - for (Network network : networks) { - NetworkInfo info = connMgr.getNetworkInfo(network); - if (info == null) { - continue; - } - if (info.getType() == ConnectivityManager.TYPE_MOBILE) { - mobile = info.isConnected(); - continue; - } - //Log.e(info.getTypeName(),""+info.isAvailable()); - if (info.isAvailable()) return false; //We are connected to at least one non-mobile network - } - if (mobile) { //We suspect we are on a mobile net - try { - //Check the number of network neighbours, on data it should be 0 - LineNumberReader is = new LineNumberReader(new FileReader("/proc/net/arp")); - is.skip(Long.MAX_VALUE); - //Log.e("NetworkHelper", "procnetarp has " + is.getLineNumber() + " lines"); - if (is.getLineNumber() > 1) { //The first line are the headers - return false; //I have neighbours, so this doesn't look like a mobile network + try { + boolean mobile = false; + final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + Network[] networks = connMgr.getAllNetworks(); + for (Network network : networks) { + NetworkInfo info = connMgr.getNetworkInfo(network); + if (info == null) { + continue; } - } catch (Exception e) { - Log.e("NetworkHelper", "Exception reading procnetarp"); - e.printStackTrace(); + if (info.getType() == ConnectivityManager.TYPE_MOBILE) { + mobile = info.isConnected(); + continue; + } + //Log.e(info.getTypeName(),""+info.isAvailable()); + if (info.isAvailable()) return false; //We are connected to at least one non-mobile network } + if (mobile) { //We suspect we are on a mobile net + try { + //Check the number of network neighbours, on data it should be 0 + LineNumberReader is = new LineNumberReader(new FileReader("/proc/net/arp")); + is.skip(Long.MAX_VALUE); + //Log.e("NetworkHelper", "procnetarp has " + is.getLineNumber() + " lines"); + if (is.getLineNumber() > 1) { //The first line are the headers + return false; //I have neighbours, so this doesn't look like a mobile network + } + } catch (Exception e) { + Log.e("NetworkHelper", "Exception reading procnetarp"); + e.printStackTrace(); + } + } + } catch(Exception e) { + e.printStackTrace(); + Log.d("isOnMobileNetwork", "Something went wrong, but this is non-critical."); } return false; }