Merge "Fix: query TYPE_WIFI usage with empty string"

This commit is contained in:
Les Lee
2021-06-14 16:30:12 +00:00
committed by Gerrit Code Review

View File

@@ -48,6 +48,7 @@ import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException; import android.os.ServiceManager.ServiceNotFoundException;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.DataUnit; import android.util.DataUnit;
import android.util.Log; import android.util.Log;
@@ -214,6 +215,10 @@ public class NetworkStatsManager {
* null} value when querying for the mobile network type to receive usage * null} value when querying for the mobile network type to receive usage
* for all mobile networks. For additional details see {@link * for all mobile networks. For additional details see {@link
* TelephonyManager#getSubscriberId()}. * 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 * @param startTime Start of period. Defined in terms of "Unix time", see
* {@link java.lang.System#currentTimeMillis}. * {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period. Defined in terms of "Unix time", see * @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 * null} value when querying for the mobile network type to receive usage
* for all mobile networks. For additional details see {@link * for all mobile networks. For additional details see {@link
* TelephonyManager#getSubscriberId()}. * 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 * @param startTime Start of period. Defined in terms of "Unix time", see
* {@link java.lang.System#currentTimeMillis}. * {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period. Defined in terms of "Unix time", see * @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 * null} value when querying for the mobile network type to receive usage
* for all mobile networks. For additional details see {@link * for all mobile networks. For additional details see {@link
* TelephonyManager#getSubscriberId()}. * 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 * @param startTime Start of period. Defined in terms of "Unix time", see
* {@link java.lang.System#currentTimeMillis}. * {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period. Defined in terms of "Unix time", see * @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 * null} value when querying for the mobile network type to receive usage
* for all mobile networks. For additional details see {@link * for all mobile networks. For additional details see {@link
* TelephonyManager#getSubscriberId()}. * 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 * @param startTime Start of period. Defined in terms of "Unix time", see
* {@link java.lang.System#currentTimeMillis}. * {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period. Defined in terms of "Unix time", see * @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 * null} value when querying for the mobile network type to receive usage
* for all mobile networks. For additional details see {@link * for all mobile networks. For additional details see {@link
* TelephonyManager#getSubscriberId()}. * 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 * @param startTime Start of period. Defined in terms of "Unix time", see
* {@link java.lang.System#currentTimeMillis}. * {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period. Defined in terms of "Unix time", see * @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 * null} value when registering for the mobile network type to receive
* notifications for all mobile networks. For additional details see {@link * notifications for all mobile networks. For additional details see {@link
* TelephonyManager#getSubscriberId()}. * 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 thresholdBytes Threshold in bytes to be notified on.
* @param callback The {@link UsageCallback} that the system will call when data usage * @param callback The {@link UsageCallback} that the system will call when data usage
* has exceeded the specified threshold. * has exceeded the specified threshold.
@@ -644,7 +669,7 @@ public class NetworkStatsManager {
: NetworkTemplate.buildTemplateMobileAll(subscriberId); : NetworkTemplate.buildTemplateMobileAll(subscriberId);
break; break;
case ConnectivityManager.TYPE_WIFI: case ConnectivityManager.TYPE_WIFI:
template = subscriberId == null template = TextUtils.isEmpty(subscriberId)
? NetworkTemplate.buildTemplateWifiWildcard() ? NetworkTemplate.buildTemplateWifiWildcard()
: NetworkTemplate.buildTemplateWifi(NetworkTemplate.WIFI_NETWORKID_ALL, : NetworkTemplate.buildTemplateWifi(NetworkTemplate.WIFI_NETWORKID_ALL,
subscriberId); subscriberId);