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,25 +346,9 @@ 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)
EntityLog.log(context, "isMetered: no underlying networks");
else
Log.i(Helper.TAG, "isMetered: no underlying networks");
return null;
}
boolean connected = false;
for (Network network : networks) { for (Network network : networks) {
ni = cm.getNetworkInfo(network); NetworkInfo ni = cm.getNetworkInfo(network);
if (ni == null) {
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); Log.i(Helper.TAG, "isMetered: underlying info=" + ni);
caps = cm.getNetworkCapabilities(network); caps = cm.getNetworkCapabilities(network);
@ -389,14 +357,15 @@ public class Helper {
EntityLog.log(context, "isMetered: no underlying caps"); EntityLog.log(context, "isMetered: no underlying caps");
else else
Log.i(Helper.TAG, "isMetered: no underlying caps"); Log.i(Helper.TAG, "isMetered: no underlying caps");
return null; continue;
} }
Log.i(Helper.TAG, "isMetered: underlying caps=" + caps);
if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) { 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 (ni != null && ni.isConnected()) {
connected = true;
Log.i(Helper.TAG, "isMetered: underlying is connected"); Log.i(Helper.TAG, "isMetered: underlying is connected");
if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) { if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) {
@ -408,22 +377,14 @@ public class Helper {
} }
} else } else
Log.i(Helper.TAG, "isMetered: underlying is disconnected"); Log.i(Helper.TAG, "isMetered: underlying is disconnected");
} else
Log.i(Helper.TAG, "isMetered: underlying is VPN");
} }
if (!connected) {
if (log)
EntityLog.log(context, "isMetered: underlying disconnected");
else
Log.i(Helper.TAG, "isMetered: underlying disconnected");
return null;
} }
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