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:
Les Lee
2021-06-05 10:35:14 +08:00
parent 1beae1bf91
commit 204f0215da
2 changed files with 12 additions and 5 deletions

View File

@@ -73,7 +73,10 @@ public class DataUsageLib {
private static NetworkTemplate getMobileTemplateForSubId(
TelephonyManager telephonyManager, int subId) {
return NetworkTemplate.buildTemplateCarrierMetered(
telephonyManager.getSubscriberId(subId));
// The null subscriberId means that no any mobile/carrier network will be matched.
// 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);
}
}