Fix: query TYPE_WIFI usage with empty string
Starting with API level 31, the subscriberId is applicable for the wifi network. Considering applications may use null or an empty string as subscriberId (for instance, cts), frameworks create MATCH_WIFI_WILDCARD NetworkTemplate when querying wifi network with null or an empty string which is the behavior before API level 31. Bug: 188915450 Test: atest -c NetworkStatsManagerTest Change-Id: I084b69903f8ba7a6225b312560752e8508938714
This commit is contained in:
@@ -48,6 +48,7 @@ import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.ServiceManager.ServiceNotFoundException;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DataUnit;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -214,6 +215,10 @@ public class NetworkStatsManager {
|
||||
* null} value when querying for the mobile network type to receive usage
|
||||
* for all mobile networks. For additional details see {@link
|
||||
* TelephonyManager#getSubscriberId()}.
|
||||
* <p>Starting with API level 31, calling apps can provide a
|
||||
* {@code subscriberId} with wifi network type to receive usage for
|
||||
* wifi networks which is under the given subscription if applicable.
|
||||
* Otherwise, pass {@code null} when querying all wifi networks.
|
||||
* @param startTime Start of period. Defined in terms of "Unix time", see
|
||||
* {@link java.lang.System#currentTimeMillis}.
|
||||
* @param endTime End of period. Defined in terms of "Unix time", see
|
||||
@@ -255,6 +260,10 @@ public class NetworkStatsManager {
|
||||
* null} value when querying for the mobile network type to receive usage
|
||||
* for all mobile networks. For additional details see {@link
|
||||
* TelephonyManager#getSubscriberId()}.
|
||||
* <p>Starting with API level 31, calling apps can provide a
|
||||
* {@code subscriberId} with wifi network type to receive usage for
|
||||
* wifi networks which is under the given subscription if applicable.
|
||||
* Otherwise, pass {@code null} when querying all wifi networks.
|
||||
* @param startTime Start of period. Defined in terms of "Unix time", see
|
||||
* {@link java.lang.System#currentTimeMillis}.
|
||||
* @param endTime End of period. Defined in terms of "Unix time", see
|
||||
@@ -300,6 +309,10 @@ public class NetworkStatsManager {
|
||||
* null} value when querying for the mobile network type to receive usage
|
||||
* for all mobile networks. For additional details see {@link
|
||||
* TelephonyManager#getSubscriberId()}.
|
||||
* <p>Starting with API level 31, calling apps can provide a
|
||||
* {@code subscriberId} with wifi network type to receive usage for
|
||||
* wifi networks which is under the given subscription if applicable.
|
||||
* Otherwise, pass {@code null} when querying all wifi networks.
|
||||
* @param startTime Start of period. Defined in terms of "Unix time", see
|
||||
* {@link java.lang.System#currentTimeMillis}.
|
||||
* @param endTime End of period. Defined in terms of "Unix time", see
|
||||
@@ -388,6 +401,10 @@ public class NetworkStatsManager {
|
||||
* null} value when querying for the mobile network type to receive usage
|
||||
* for all mobile networks. For additional details see {@link
|
||||
* TelephonyManager#getSubscriberId()}.
|
||||
* <p>Starting with API level 31, calling apps can provide a
|
||||
* {@code subscriberId} with wifi network type to receive usage for
|
||||
* wifi networks which is under the given subscription if applicable.
|
||||
* Otherwise, pass {@code null} when querying all wifi networks.
|
||||
* @param startTime Start of period. Defined in terms of "Unix time", see
|
||||
* {@link java.lang.System#currentTimeMillis}.
|
||||
* @param endTime End of period. Defined in terms of "Unix time", see
|
||||
@@ -450,6 +467,10 @@ public class NetworkStatsManager {
|
||||
* null} value when querying for the mobile network type to receive usage
|
||||
* for all mobile networks. For additional details see {@link
|
||||
* TelephonyManager#getSubscriberId()}.
|
||||
* <p>Starting with API level 31, calling apps can provide a
|
||||
* {@code subscriberId} with wifi network type to receive usage for
|
||||
* wifi networks which is under the given subscription if applicable.
|
||||
* Otherwise, pass {@code null} when querying all wifi networks.
|
||||
* @param startTime Start of period. Defined in terms of "Unix time", see
|
||||
* {@link java.lang.System#currentTimeMillis}.
|
||||
* @param endTime End of period. Defined in terms of "Unix time", see
|
||||
@@ -531,6 +552,10 @@ public class NetworkStatsManager {
|
||||
* null} value when registering for the mobile network type to receive
|
||||
* notifications for all mobile networks. For additional details see {@link
|
||||
* TelephonyManager#getSubscriberId()}.
|
||||
* <p>Starting with API level 31, calling apps can provide a
|
||||
* {@code subscriberId} with wifi network type to receive usage for
|
||||
* wifi networks which is under the given subscription if applicable.
|
||||
* Otherwise, pass {@code null} when querying all wifi networks.
|
||||
* @param thresholdBytes Threshold in bytes to be notified on.
|
||||
* @param callback The {@link UsageCallback} that the system will call when data usage
|
||||
* has exceeded the specified threshold.
|
||||
@@ -644,7 +669,7 @@ public class NetworkStatsManager {
|
||||
: NetworkTemplate.buildTemplateMobileAll(subscriberId);
|
||||
break;
|
||||
case ConnectivityManager.TYPE_WIFI:
|
||||
template = subscriberId == null
|
||||
template = TextUtils.isEmpty(subscriberId)
|
||||
? NetworkTemplate.buildTemplateWifiWildcard()
|
||||
: NetworkTemplate.buildTemplateWifi(NetworkTemplate.WIFI_NETWORKID_ALL,
|
||||
subscriberId);
|
||||
|
||||
Reference in New Issue
Block a user