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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user