Adapt NET_CAPABILITY_TEMPORARILY_NOT_METERED in NetworkIdentity

NET_CAPABILITY_TEMPORARILY_NOT_METERED is a capability indicates
networks are generally metered, but are currently unmetered.
NetworkIdentity currently did not consider it which will cause
Settings shows high data usage. To exclude unmetered 5g from the
metered usage, NetworkIdentity should consider a network with
NET_CAPABILITY_TEMPORARILY_NOT_METERED capabilities as not metered.

Bug: 183776809
Test: FrameworksNetTests:NetworkIdentityTest
Change-Id: Iadbc082b52f16708207e8aecf0904356bc0898ab
This commit is contained in:
Aaron Huang
2021-05-04 02:58:04 +08:00
parent 559c51f903
commit 35cc186110

View File

@@ -220,8 +220,10 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> {
String networkId = null; String networkId = null;
boolean roaming = !snapshot.getNetworkCapabilities().hasCapability( boolean roaming = !snapshot.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
boolean metered = !snapshot.getNetworkCapabilities().hasCapability( boolean metered = !(snapshot.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_METERED); NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
|| snapshot.getNetworkCapabilities().hasCapability(
NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
final int oemManaged = getOemBitfield(snapshot.getNetworkCapabilities()); final int oemManaged = getOemBitfield(snapshot.getNetworkCapabilities());