Fix crash that occurs on devices that does not have telephony features.
If the device does not have telephony features, internal modules should not create or initialize.
Bug: 323431082
Test: verify cf_x86_64_auto-trunk_staging-userdebug,
tangorpro-trunk_staging-userdebug on boot time.
Test: manual test with tangor
wifi on/off, bluetooth on/off, capture image, video
Change-Id: Ie079f1f7005efc23132bba95337d65d7f07b8452
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 7fba651..cbbc889 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -241,14 +241,14 @@
private final CarrierVvmPackageInstalledReceiver mCarrierVvmPackageInstalledReceiver =
new CarrierVvmPackageInstalledReceiver();
- private final SettingsObserver mSettingsObserver;
+ private SettingsObserver mSettingsObserver;
private BinderCallsStats.SettingsObserver mBinderCallsSettingsObserver;
// Mapping of phone ID to the associated TelephonyCallback. These should be registered without
// fine or coarse location since we only use ServiceState for
private PhoneAppCallback[] mTelephonyCallbacks;
- private FeatureFlags mFeatureFlags;
+ private FeatureFlags mFeatureFlags = new FeatureFlagsImpl();
private class PhoneAppCallback extends TelephonyCallback implements
TelephonyCallback.ServiceStateListener {
@@ -462,7 +462,13 @@
public PhoneGlobals(Context context) {
super(context);
sMe = this;
- mSettingsObserver = new SettingsObserver(context, mHandler);
+ if (mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()) {
+ if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ mSettingsObserver = new SettingsObserver(context, mHandler);
+ }
+ } else {
+ mSettingsObserver = new SettingsObserver(context, mHandler);
+ }
}
public void onCreate() {
@@ -470,6 +476,13 @@
ContentResolver resolver = getContentResolver();
+ if (mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()) {
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ Log.v(LOG_TAG, "onCreate()... but not defined FEATURE_TELEPHONY");
+ return;
+ }
+ }
+
// Initialize the shim from frameworks/opt/telephony into packages/services/Telephony.
TelephonyLocalConnection.setInstance(new LocalConnectionImpl(this));
@@ -499,7 +512,6 @@
DomainSelectionResolver.make(this, dssComponentName);
// Initialize the telephony framework
- mFeatureFlags = new FeatureFlagsImpl();
PhoneFactory.makeDefaultPhones(this, mFeatureFlags);
// Initialize the DomainSelectionResolver after creating the Phone instance