mirror of https://github.com/M66B/NetGuard.git
Show disconnected state
This commit is contained in:
parent
a516cc0007
commit
2f42e18b2e
|
@ -324,10 +324,13 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
Util.logExtras(intent);
|
||||
|
||||
if (adapter != null)
|
||||
if (intent.getBooleanExtra("metered", false))
|
||||
adapter.setMobileActive();
|
||||
if (intent.getBooleanExtra("connected", false))
|
||||
if (intent.getBooleanExtra("metered", false))
|
||||
adapter.setMobileActive();
|
||||
else
|
||||
adapter.setWifiActive();
|
||||
else
|
||||
adapter.setWifiActive();
|
||||
adapter.setDisconnected();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -182,6 +182,12 @@ public class RuleAdapter extends RecyclerView.Adapter<RuleAdapter.ViewHolder> im
|
|||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setDisconnected() {
|
||||
wifiActive = false;
|
||||
otherActive = false;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final ViewHolder holder, final int position) {
|
||||
// Get rule
|
||||
|
|
|
@ -54,6 +54,7 @@ import java.nio.ByteOrder;
|
|||
public class SinkholeService extends VpnService {
|
||||
private static final String TAG = "NetGuard.Service";
|
||||
|
||||
private boolean last_connected;
|
||||
private boolean last_metered;
|
||||
private boolean last_roaming;
|
||||
private ParcelFileDescriptor vpn = null;
|
||||
|
@ -125,6 +126,7 @@ public class SinkholeService extends VpnService {
|
|||
|
||||
} else {
|
||||
Intent ruleset = new Intent(ActivityMain.ACTION_RULES_CHANGED);
|
||||
ruleset.putExtra("connected", last_connected);
|
||||
ruleset.putExtra("metered", last_metered);
|
||||
LocalBroadcastManager.getInstance(SinkholeService.this).sendBroadcast(ruleset);
|
||||
}
|
||||
|
@ -152,6 +154,7 @@ public class SinkholeService extends VpnService {
|
|||
case stop:
|
||||
if (vpn == null) {
|
||||
Intent ruleset = new Intent(ActivityMain.ACTION_RULES_CHANGED);
|
||||
ruleset.putExtra("connected", last_connected);
|
||||
ruleset.putExtra("metered", last_metered);
|
||||
LocalBroadcastManager.getInstance(SinkholeService.this).sendBroadcast(ruleset);
|
||||
} else {
|
||||
|
@ -186,22 +189,26 @@ public class SinkholeService extends VpnService {
|
|||
boolean interactive = Util.isInteractive(this);
|
||||
boolean useMetered = prefs.getBoolean("use_metered", false);
|
||||
|
||||
// Update connected state
|
||||
last_connected = Util.isConnected(SinkholeService.this);
|
||||
|
||||
// Update metered state
|
||||
if (wifi && !useMetered)
|
||||
metered = false;
|
||||
last_metered = metered;
|
||||
|
||||
// Update roaming state
|
||||
if (last_roaming != Util.isRoaming(SinkholeService.this)) {
|
||||
last_roaming = !last_roaming;
|
||||
Log.i(TAG, "New state roaming=" + last_roaming);
|
||||
}
|
||||
|
||||
Log.i(TAG, "Starting wifi=" + wifi +
|
||||
" metered=" + metered + "/" + useMetered +
|
||||
Log.i(TAG, "Starting connected=" + last_connected +
|
||||
" wifi=" + wifi +
|
||||
" metered=" + metered +
|
||||
" roaming=" + last_roaming +
|
||||
" interactive=" + interactive);
|
||||
|
||||
// Update metered state
|
||||
if (wifi && !useMetered)
|
||||
metered = false;
|
||||
last_metered = metered;
|
||||
|
||||
// Build VPN service
|
||||
final Builder builder = new Builder();
|
||||
builder.setSession(getString(R.string.app_name) + " session");
|
||||
|
@ -246,6 +253,7 @@ public class SinkholeService extends VpnService {
|
|||
builder.setBlocking(true);
|
||||
|
||||
Intent ruleset = new Intent(ActivityMain.ACTION_RULES_CHANGED);
|
||||
ruleset.putExtra("connected", last_connected);
|
||||
ruleset.putExtra("metered", metered);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(ruleset);
|
||||
|
||||
|
@ -401,6 +409,7 @@ public class SinkholeService extends VpnService {
|
|||
mServiceLooper = thread.getLooper();
|
||||
mServiceHandler = new ServiceHandler(mServiceLooper);
|
||||
|
||||
last_connected = Util.isConnected(this);
|
||||
last_metered = Util.isMeteredNetwork(this);
|
||||
last_roaming = Util.isRoaming(this);
|
||||
|
||||
|
|
|
@ -70,9 +70,10 @@ public class Util {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean isRoaming(Context context) {
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
return tm.isNetworkRoaming();
|
||||
public static boolean isConnected(Context context) {
|
||||
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo ni = cm.getActiveNetworkInfo();
|
||||
return (ni != null && ni.isConnected());
|
||||
}
|
||||
|
||||
public static boolean isWifiActive(Context context) {
|
||||
|
@ -86,6 +87,11 @@ public class Util {
|
|||
return cm.isActiveNetworkMetered();
|
||||
}
|
||||
|
||||
public static boolean isRoaming(Context context) {
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
return tm.isNetworkRoaming();
|
||||
}
|
||||
|
||||
public static boolean isInteractive(Context context) {
|
||||
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||
return pm.isInteractive();
|
||||
|
|
Loading…
Reference in New Issue