Fix more crashes during partial telephony stack boot
Bug: 331855229
Bug: 344261877
Flag: EXEMPT bugfix
Test: boot cf_x86_64_auto-trunk_staging-userdebug
Test: atest SatelliteEntitlementControllerTest
Change-Id: Ice5839c0834ea4c893140163f4056da314d13ea6
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index d4822ad..7f720c2 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -1344,7 +1344,10 @@
return new PersistableBundle();
}
- enforceTelephonyFeatureWithException(callingPackage, "getConfigForSubIdWithFeature");
+ if (!mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(callingPackage, "getConfigForSubIdWithFeature");
+ }
int phoneId = SubscriptionManager.getPhoneId(subscriptionId);
PersistableBundle retConfig = CarrierConfigManager.getDefaultConfig();
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 9aed910..308ef40 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -3429,8 +3429,11 @@
@Override
public String getNetworkCountryIsoForPhone(int phoneId) {
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS, "getNetworkCountryIsoForPhone");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS, "getNetworkCountryIsoForPhone");
+ }
// Reporting the correct network country is ambiguous when IWLAN could conflict with
// registered cell info, so return a NULL country instead.
@@ -3801,8 +3804,11 @@
@Override
public int getSubscriptionCarrierId(int subId) {
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "getSubscriptionCarrierId");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "getSubscriptionCarrierId");
+ }
final long identity = Binder.clearCallingIdentity();
try {
@@ -3999,8 +4005,11 @@
@Override
public int getActivePhoneTypeForSlot(int slotIndex) {
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY, "getActivePhoneTypeForSlot");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY, "getActivePhoneTypeForSlot");
+ }
final long identity = Binder.clearCallingIdentity();
try {
@@ -5842,8 +5851,11 @@
*/
@Override
public boolean hasIccCardUsingSlotIndex(int slotIndex) {
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "hasIccCardUsingSlotIndex");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "hasIccCardUsingSlotIndex");
+ }
final long identity = Binder.clearCallingIdentity();
try {
@@ -7256,8 +7268,12 @@
TelephonyPermissions.enforceCallingOrSelfReadPrecisePhoneStatePermissionOrCarrierPrivilege(
mApp, subId, "getAllowedNetworkTypesForReason");
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS, "getAllowedNetworkTypesForReason");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS,
+ "getAllowedNetworkTypesForReason");
+ }
final long identity = Binder.clearCallingIdentity();
try {
@@ -7733,9 +7749,12 @@
public @Nullable String getCarrierServicePackageNameForLogicalSlot(int logicalSlotIndex) {
enforceReadPrivilegedPermission("getCarrierServicePackageNameForLogicalSlot");
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION,
- "getCarrierServicePackageNameForLogicalSlot");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION,
+ "getCarrierServicePackageNameForLogicalSlot");
+ }
final Phone phone = PhoneFactory.getPhone(logicalSlotIndex);
if (phone == null) {
@@ -8103,8 +8122,11 @@
throw e;
}
- enforceTelephonyFeatureWithException(callingPackage,
- PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS, "getRadioAccessFamily");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(callingPackage,
+ PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS, "getRadioAccessFamily");
+ }
final long identity = Binder.clearCallingIdentity();
try {
@@ -11300,9 +11322,12 @@
@Override
public boolean isRadioInterfaceCapabilitySupported(
final @NonNull @TelephonyManager.RadioInterfaceCapability String capability) {
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS,
- "isRadioInterfaceCapabilitySupported");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS,
+ "isRadioInterfaceCapabilitySupported");
+ }
Set<String> radioInterfaceCapabilities =
mRadioInterfaceCapabilities.getCapabilities();
@@ -12874,8 +12899,11 @@
@Override
@SimState
public int getSimStateForSlotIndex(int slotIndex) {
- enforceTelephonyFeatureWithException(getCurrentPackageName(),
- PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "getSimStateForSlotIndex");
+ if (!mApp.getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
+ enforceTelephonyFeatureWithException(getCurrentPackageName(),
+ PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "getSimStateForSlotIndex");
+ }
IccCardConstants.State simState;
if (slotIndex < 0) {
diff --git a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java
index 307d1e6..8d9850d 100644
--- a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java
+++ b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java
@@ -145,8 +145,10 @@
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
mCarrierConfigChangeListener = (slotIndex, subId, carrierId, specificCarrierId) ->
handleCarrierConfigChanged(slotIndex, subId, carrierId, specificCarrierId);
- mCarrierConfigManager.registerCarrierConfigChangeListener(this::post,
- mCarrierConfigChangeListener);
+ if (mCarrierConfigManager != null) {
+ mCarrierConfigManager.registerCarrierConfigChangeListener(this::post,
+ mCarrierConfigChangeListener);
+ }
mConnectivityManager = context.getSystemService(ConnectivityManager.class);
mNetworkCallback = new ConnectivityManager.NetworkCallback() {
@Override
@@ -620,11 +622,14 @@
@NonNull
private PersistableBundle getConfigForSubId(int subId) {
- PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId,
- CarrierConfigManager.ImsServiceEntitlement.KEY_ENTITLEMENT_SERVER_URL_STRING,
- CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_STATUS_REFRESH_DAYS_INT,
- CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL,
- CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_APP_NAME_STRING);
+ PersistableBundle config = null;
+ if (mCarrierConfigManager != null) {
+ config = mCarrierConfigManager.getConfigForSubId(subId,
+ CarrierConfigManager.ImsServiceEntitlement.KEY_ENTITLEMENT_SERVER_URL_STRING,
+ CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_STATUS_REFRESH_DAYS_INT,
+ CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL,
+ CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_APP_NAME_STRING);
+ }
if (config == null || config.isEmpty()) {
config = CarrierConfigManager.getDefaultConfig();
}