Handle is metered edge cases

pull/147/head
M66B 7 years ago
parent 76aacb228a
commit 37d52c611d

@ -320,24 +320,7 @@ public class Helper {
return null; return null;
} }
NetworkInfo ni = cm.getNetworkInfo(active); Log.i(Helper.TAG, "isMetered: active info=" + cm.getNetworkInfo(active));
if (ni == null) {
if (log)
EntityLog.log(context, "isMetered: active no info");
else
Log.i(Helper.TAG, "isMetered: active no info");
return null;
}
Log.i(Helper.TAG, "isMetered: active info=" + ni);
if (!ni.isConnected()) {
if (log)
EntityLog.log(context, "isMetered: active not connected");
else
Log.i(Helper.TAG, "isMetered: active not connected");
return null;
}
NetworkCapabilities caps = cm.getNetworkCapabilities(active); NetworkCapabilities caps = cm.getNetworkCapabilities(active);
if (caps == null) { if (caps == null) {
@ -345,7 +328,8 @@ public class Helper {
EntityLog.log(context, "isMetered: active no caps"); EntityLog.log(context, "isMetered: active no caps");
else else
Log.i(Helper.TAG, "isMetered: active no caps"); Log.i(Helper.TAG, "isMetered: active no caps");
return null; // Assume metered
return true;
} }
Log.i(Helper.TAG, "isMetered: active caps=" + caps); Log.i(Helper.TAG, "isMetered: active caps=" + caps);
@ -362,68 +346,45 @@ public class Helper {
// VPN: evaluate underlying networks // VPN: evaluate underlying networks
Network[] networks = cm.getAllNetworks(); Network[] networks = cm.getAllNetworks();
if (networks == null) { if (networks != null)
if (log) for (Network network : networks) {
EntityLog.log(context, "isMetered: no underlying networks"); NetworkInfo ni = cm.getNetworkInfo(network);
else Log.i(Helper.TAG, "isMetered: underlying info=" + ni);
Log.i(Helper.TAG, "isMetered: no underlying networks");
return null; caps = cm.getNetworkCapabilities(network);
} if (caps == null) {
if (log)
boolean connected = false; EntityLog.log(context, "isMetered: no underlying caps");
for (Network network : networks) { else
ni = cm.getNetworkInfo(network); Log.i(Helper.TAG, "isMetered: no underlying caps");
if (ni == null) { continue;
if (log) }
EntityLog.log(context, "isMetered: no underlying info");
else
Log.i(Helper.TAG, "isMetered: no underlying info");
return null;
}
Log.i(Helper.TAG, "isMetered: underlying info=" + ni);
caps = cm.getNetworkCapabilities(network);
if (caps == null) {
if (log)
EntityLog.log(context, "isMetered: no underlying caps");
else
Log.i(Helper.TAG, "isMetered: no underlying caps");
return null;
}
if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
Log.i(Helper.TAG, "isMetered: underlying caps=" + caps); Log.i(Helper.TAG, "isMetered: underlying caps=" + caps);
if (ni.isConnected()) { if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
connected = true; Log.i(Helper.TAG, "isMetered: underlying caps=" + caps);
Log.i(Helper.TAG, "isMetered: underlying is connected");
if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) {
if (log)
EntityLog.log(context, "isMetered: underlying is unmetered");
else
Log.i(Helper.TAG, "isMetered: underlying is unmetered");
return false;
}
} else
Log.i(Helper.TAG, "isMetered: underlying is disconnected");
} else
Log.i(Helper.TAG, "isMetered: underlying is VPN");
}
if (!connected) { if (ni != null && ni.isConnected()) {
if (log) Log.i(Helper.TAG, "isMetered: underlying is connected");
EntityLog.log(context, "isMetered: underlying disconnected");
else if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) {
Log.i(Helper.TAG, "isMetered: underlying disconnected"); if (log)
return null; EntityLog.log(context, "isMetered: underlying is unmetered");
} else
Log.i(Helper.TAG, "isMetered: underlying is unmetered");
return false;
}
} else
Log.i(Helper.TAG, "isMetered: underlying is disconnected");
}
}
if (log) if (log)
EntityLog.log(context, "isMetered: underlying is metered"); EntityLog.log(context, "isMetered: underlying assume metered");
else else
Log.i(Helper.TAG, "isMetered: underlying is metered"); Log.i(Helper.TAG, "isMetered: underlying assume metered");
// Assume metered
return true; return true;
} }

Loading…
Cancel
Save