Usage Settings: Fix NPE when subscriberId is Null.
For mobile, a old API: buildTemplateMobileAll doesn't includes the merged wifi network, call the new API: buildTemplateCarrierMetered to replace the old one. But new API: buildTemplateCarrierMetered requires non-null subscriberId. Call old API: buildTemplateMobileAll when subscriberId is NULL since the matched result is always empty when subscriberId is NULL. No any different between buildTemplateCarrierMetered and buildTemplateMobileAll. Bug: 190233044 Bug: 190135429 Test: make RunSettingsRoboTests ROBOTEST_FILTER=SettingsDumpServiceTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=DataUsageLibTest Change-Id: Ic6dada8260029e47e044d016ebc701c25dbf9b2a
This commit is contained in:
@@ -111,9 +111,13 @@ public class SettingsDumpService extends Service {
|
|||||||
for (SubscriptionInfo info : manager.getAvailableSubscriptionInfoList()) {
|
for (SubscriptionInfo info : manager.getAvailableSubscriptionInfoList()) {
|
||||||
telephonyManager = telephonyManager
|
telephonyManager = telephonyManager
|
||||||
.createForSubscriptionId(info.getSubscriptionId());
|
.createForSubscriptionId(info.getSubscriptionId());
|
||||||
NetworkTemplate carrier = NetworkTemplate.buildTemplateCarrierMetered(
|
String subscriberId = telephonyManager.getSubscriberId();
|
||||||
telephonyManager.getSubscriberId());
|
// The null subscriberId means that no any mobile/carrier network will be matched.
|
||||||
final JSONObject usage = dumpDataUsage(carrier, controller);
|
// Using old API: buildTemplateMobileAll for the null subscriberId to avoid NPE.
|
||||||
|
NetworkTemplate template = subscriberId != null
|
||||||
|
? NetworkTemplate.buildTemplateCarrierMetered(subscriberId)
|
||||||
|
: NetworkTemplate.buildTemplateMobileAll(subscriberId);
|
||||||
|
final JSONObject usage = dumpDataUsage(template, controller);
|
||||||
usage.put("subId", info.getSubscriptionId());
|
usage.put("subId", info.getSubscriptionId());
|
||||||
array.put(usage);
|
array.put(usage);
|
||||||
}
|
}
|
||||||
|
@@ -73,7 +73,10 @@ public class DataUsageLib {
|
|||||||
|
|
||||||
private static NetworkTemplate getMobileTemplateForSubId(
|
private static NetworkTemplate getMobileTemplateForSubId(
|
||||||
TelephonyManager telephonyManager, int subId) {
|
TelephonyManager telephonyManager, int subId) {
|
||||||
return NetworkTemplate.buildTemplateCarrierMetered(
|
// The null subscriberId means that no any mobile/carrier network will be matched.
|
||||||
telephonyManager.getSubscriberId(subId));
|
// Using old API: buildTemplateMobileAll for the null subscriberId to avoid NPE.
|
||||||
|
String subscriberId = telephonyManager.getSubscriberId(subId);
|
||||||
|
return subscriberId != null ? NetworkTemplate.buildTemplateCarrierMetered(subscriberId)
|
||||||
|
: NetworkTemplate.buildTemplateMobileAll(subscriberId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user