Add try-catch for set/get wifiCalling mode

The APIs can throw IllegalArgumentExceptionm, the UI need the try-catch.

Bug: 299239773
Bug: 287946939

Test: build pass
Change-Id: I4b413abc985dfa871d3c2d39798b51dc1a686313
This commit is contained in:
SongFerngWang
2023-10-23 16:27:06 +08:00
parent e986c4cd89
commit 5ce87cb03d
3 changed files with 104 additions and 30 deletions

View File

@@ -61,6 +61,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
PhoneAccountHandle mSimCallManager;
private PhoneTelephonyCallback mTelephonyCallback;
private Preference mPreference;
private boolean mHasException;
public WifiCallingPreferenceController(Context context, String key) {
super(context, key);
@@ -103,6 +104,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
Log.d(TAG, "Skip update under mCallState=" + mCallState);
return;
}
mHasException = false;
CharSequence summaryText = null;
if (mSimCallManager != null) {
final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
@@ -122,7 +124,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
summaryText = getResourceIdForWfcMode(mSubId);
}
preference.setSummary(summaryText);
preference.setEnabled(mCallState == TelephonyManager.CALL_STATE_IDLE);
preference.setEnabled(mCallState == TelephonyManager.CALL_STATE_IDLE && !mHasException);
}
private CharSequence getResourceIdForWfcMode(int subId) {
@@ -140,9 +142,16 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
}
final boolean isRoaming = getTelephonyManager(mContext, subId)
.isNetworkRoaming();
final int wfcMode = (isRoaming && !useWfcHomeModeForRoaming)
? mImsMmTelManager.getVoWiFiRoamingModeSetting() :
mImsMmTelManager.getVoWiFiModeSetting();
int wfcMode = ImsMmTelManager.WIFI_MODE_UNKNOWN;
try {
wfcMode = (isRoaming && !useWfcHomeModeForRoaming)
? mImsMmTelManager.getVoWiFiRoamingModeSetting() :
mImsMmTelManager.getVoWiFiModeSetting();
} catch (IllegalArgumentException e) {
mHasException = true;
Log.e(TAG, "getResourceIdForWfcMode: Exception", e);
}
switch (wfcMode) {
case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;