Merge "Data only device(without FEATURE_TELEPHON_CALLING) : Add try/catch to handle UnsupportedOperationException" into main
diff --git a/src/com/android/settings/AirplaneModeEnabler.java b/src/com/android/settings/AirplaneModeEnabler.java
index f3fd3a0..c233dda 100644
--- a/src/com/android/settings/AirplaneModeEnabler.java
+++ b/src/com/android/settings/AirplaneModeEnabler.java
@@ -29,6 +29,7 @@
import androidx.annotation.VisibleForTesting;
+import com.android.internal.telephony.flags.Flags;
import com.android.settings.network.GlobalSettingsChangeListener;
import com.android.settings.network.ProxySubscriptionManager;
import com.android.settings.overlay.FeatureFactory;
@@ -146,8 +147,19 @@
* @return any subscription within device is under ECM mode
*/
public boolean isInEcmMode() {
- if (mTelephonyManager.getEmergencyCallbackMode()) {
- return true;
+ if (Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ try {
+ if (mTelephonyManager.getEmergencyCallbackMode()) {
+ return true;
+ }
+ } catch (UnsupportedOperationException e) {
+ // Device doesn't support FEATURE_TELEPHONY_CALLING
+ // Ignore exception, device is not in ECM mode.
+ }
+ } else {
+ if (mTelephonyManager.getEmergencyCallbackMode()) {
+ return true;
+ }
}
final List<SubscriptionInfo> subInfoList =
ProxySubscriptionManager.getInstance(mContext).getActiveSubscriptionsInfo();
@@ -158,8 +170,18 @@
final TelephonyManager telephonyManager =
mTelephonyManager.createForSubscriptionId(subInfo.getSubscriptionId());
if (telephonyManager != null) {
- if (telephonyManager.getEmergencyCallbackMode()) {
- return true;
+ if (!Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ if (telephonyManager.getEmergencyCallbackMode()) {
+ return true;
+ }
+ } else {
+ try {
+ if (telephonyManager.getEmergencyCallbackMode()) {
+ return true;
+ }
+ } catch (UnsupportedOperationException e) {
+ // Ignore exception, device is not in ECM mode.
+ }
}
}
}
diff --git a/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceController.java b/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceController.java
index cd2f6f0..727cdd5 100644
--- a/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceController.java
+++ b/src/com/android/settings/accessibility/HearingAidCompatibilityPreferenceController.java
@@ -22,6 +22,7 @@
import android.telephony.TelephonyManager;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.Flags;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
@@ -49,8 +50,18 @@
@Override
public int getAvailabilityStatus() {
- return mTelephonyManager.isHearingAidCompatibilitySupported() ? AVAILABLE
- : UNSUPPORTED_ON_DEVICE;
+ if (Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ try {
+ return mTelephonyManager.isHearingAidCompatibilitySupported() ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
+ } catch (UnsupportedOperationException e) {
+ // Device doesn't support FEATURE_TELEPHONY_CALLING
+ return UNSUPPORTED_ON_DEVICE;
+ }
+ } else {
+ return mTelephonyManager.isHearingAidCompatibilitySupported() ? AVAILABLE
+ : UNSUPPORTED_ON_DEVICE;
+ }
}
@Override
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 5e1d56e..56fbcde 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -38,8 +38,8 @@
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
-import com.android.settings.R;
import com.android.internal.telephony.flags.Flags;
+import com.android.settings.R;
import com.android.settings.network.AllowedNetworkTypesListener;
import com.android.settings.network.CarrierConfigCache;
import com.android.settings.network.SubscriptionsChangeListener;
@@ -924,7 +924,16 @@
// assign current call state so that it helps to show correct preference state even
// before first onCallStateChanged() by initial registration.
- mCallState = mTelephonyManager.getCallState(subId);
+ if (Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ try {
+ mCallState = mTelephonyManager.getCallState(subId);
+ } catch (UnsupportedOperationException e) {
+ // Device doesn't support FEATURE_TELEPHONY_CALLING
+ mCallState = TelephonyManager.CALL_STATE_IDLE;
+ }
+ } else {
+ mCallState = mTelephonyManager.getCallState(subId);
+ }
mTelephonyManager.registerTelephonyCallback(
mContext.getMainExecutor(), mTelephonyCallback);
}
diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
index 1b6f516..1a71e5a 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
@@ -33,6 +33,7 @@
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
+import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.settings.R;
import com.android.settings.network.ims.VolteQueryImsState;
@@ -234,7 +235,16 @@
}
// assign current call state so that it helps to show correct preference state even
// before first onCallStateChanged() by initial registration.
- mCallState = mTelephonyManager.getCallState(subId);
+ if (Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ try {
+ mCallState = mTelephonyManager.getCallState(subId);
+ } catch (UnsupportedOperationException e) {
+ // Device doesn't support FEATURE_TELEPHONY_CALLING
+ mCallState = TelephonyManager.CALL_STATE_IDLE;
+ }
+ } else {
+ mCallState = mTelephonyManager.getCallState(subId);
+ }
mTelephonyManager.registerTelephonyCallback(
mContext.getMainExecutor(), mTelephonyCallback);
diff --git a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java
index dc1c03f..ecf01cb9 100644
--- a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java
@@ -31,6 +31,7 @@
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
+import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -211,7 +212,16 @@
// assign current call state so that it helps to show correct preference state even
// before first onCallStateChanged() by initial registration.
- mCallState = mLocalTelephonyManager.getCallState();
+ if (Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ try {
+ mCallState = mLocalTelephonyManager.getCallState();
+ } catch (UnsupportedOperationException e) {
+ // Device doesn't support FEATURE_TELEPHONY_CALLING
+ mCallState = TelephonyManager.CALL_STATE_IDLE;
+ }
+ } else {
+ mCallState = mLocalTelephonyManager.getCallState();
+ }
mLocalTelephonyManager.registerTelephonyCallback(
mContext.getMainExecutor(), mTelephonyCallback);
}
diff --git a/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java b/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java
index 5810510..f803efd 100644
--- a/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java
@@ -31,6 +31,7 @@
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
+import com.android.internal.telephony.flags.Flags;
import com.android.settings.network.CarrierConfigCache;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.network.ims.VolteQueryImsState;
@@ -195,7 +196,16 @@
}
// assign current call state so that it helps to show correct preference state even
// before first onCallStateChanged() by initial registration.
- mCallState = mTelephonyManager.getCallState(subId);
+ if (Flags.enforceTelephonyFeatureMappingForPublicApis()) {
+ try {
+ mCallState = mTelephonyManager.getCallState(subId);
+ } catch (UnsupportedOperationException e) {
+ // Device doesn't support FEATURE_TELEPHONY_CALLING
+ mCallState = TelephonyManager.CALL_STATE_IDLE;
+ }
+ } else {
+ mCallState = mTelephonyManager.getCallState(subId);
+ }
mTelephonyManager.registerTelephonyCallback(context.getMainExecutor(), this);
}