From 84617b9b00783fe11cfdc892cdfb116b3442ae5e Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 14 Nov 2015 10:49:15 +0100 Subject: [PATCH] Less verbose network status / live update --- .../faircode/netguard/ActivitySettings.java | 61 +++++++++++++++---- .../main/java/eu/faircode/netguard/Util.java | 12 +++- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/netguard/ActivitySettings.java b/app/src/main/java/eu/faircode/netguard/ActivitySettings.java index 1c3e6066..1e3b891d 100644 --- a/app/src/main/java/eu/faircode/netguard/ActivitySettings.java +++ b/app/src/main/java/eu/faircode/netguard/ActivitySettings.java @@ -19,11 +19,14 @@ package eu.faircode.netguard; Copyright 2015 by Marcel Bokhorst (M66B) */ +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.Network; +import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.Bundle; import android.preference.Preference; @@ -53,6 +56,8 @@ import javax.xml.parsers.SAXParserFactory; public class ActivitySettings extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "NetGuard.Settings"; + private Preference pref_vpn = null; + private static final int REQUEST_EXPORT = 1; private static final int REQUEST_IMPORT = 2; private static final Intent INTENT_VPN_SETTINGS = new Intent("android.net.vpn.SETTINGS"); @@ -68,10 +73,27 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere } @Override - public void onDestroy() { + protected void onResume() { + super.onResume(); + + // Listen for preference changes + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + prefs.registerOnSharedPreferenceChangeListener(this); + + // Listen for connectivity updates + IntentFilter ifConnectivity = new IntentFilter(); + ifConnectivity.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + registerReceiver(connectivityChangedReceiver, ifConnectivity); + } + + @Override + protected void onPause() { + super.onPause(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.unregisterOnSharedPreferenceChangeListener(this); - super.onDestroy(); + + unregisterReceiver(connectivityChangedReceiver); } public void setup(PreferenceScreen screen) { @@ -95,21 +117,13 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere } }); - Preference pref_vpn = screen.findPreference("vpn"); + pref_vpn = screen.findPreference("vpn"); if (Util.isDebuggable(this)) { pref_vpn.setEnabled(INTENT_VPN_SETTINGS.resolveActivity(this.getPackageManager()) != null); pref_vpn.setIntent(INTENT_VPN_SETTINGS); - - ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - StringBuilder sb = new StringBuilder(); - for (Network network : cm.getAllNetworks()) - sb.append(cm.getNetworkInfo(network)).append("\n"); - pref_vpn.setSummary(sb.toString()); + updateNetworkSummary(); } else screen.removePreference(pref_vpn); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - prefs.registerOnSharedPreferenceChangeListener(this); } @Override @@ -131,6 +145,29 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere recreate(); } + private BroadcastReceiver connectivityChangedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + updateNetworkSummary(); + } + }; + + private void updateNetworkSummary() { + ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + StringBuilder sb = new StringBuilder(); + for (Network network : cm.getAllNetworks()) { + NetworkInfo ni = cm.getNetworkInfo(network); + sb.append("Network: ") + .append(ni.getTypeName()) + .append("/") + .append(ni.getSubtypeName()) + .append("=") + .append(ni.getDetailedState()) + .append("\r\n"); + } + pref_vpn.setSummary(sb.toString()); + } + @Override protected void onActivityResult(int requestCode, int resultCode, final Intent data) { Log.i(TAG, "onActivityResult request=" + requestCode + " result=" + requestCode + " ok=" + (resultCode == RESULT_OK)); diff --git a/app/src/main/java/eu/faircode/netguard/Util.java b/app/src/main/java/eu/faircode/netguard/Util.java index 036b202d..b33e4a65 100644 --- a/app/src/main/java/eu/faircode/netguard/Util.java +++ b/app/src/main/java/eu/faircode/netguard/Util.java @@ -168,8 +168,16 @@ public class Util { sb.append(String.format("VPN dialogs: %b\r\n", isPackageInstalled("com.android.vpndialogs", context))); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - for (Network network : cm.getAllNetworks()) - sb.append("Network: ").append(cm.getNetworkInfo(network)).append("\r\n"); + for (Network network : cm.getAllNetworks()) { + NetworkInfo ni = cm.getNetworkInfo(network); + sb.append("Network: ") + .append(ni.getTypeName()) + .append("/") + .append(ni.getSubtypeName()) + .append("=") + .append(ni.getDetailedState()) + .append("\r\n"); + } sb.append("\r\n"); sb.append("Please describe your problem:\r\n");