diff --git a/src/java/com/android/internal/telephony/SmsDispatchersController.java b/src/java/com/android/internal/telephony/SmsDispatchersController.java index cc287f805544eadd97df33c00559985f2138baec..10844894bb9a16d3abda21fd46d7b2cf81f70e79 100644 --- a/src/java/com/android/internal/telephony/SmsDispatchersController.java +++ b/src/java/com/android/internal/telephony/SmsDispatchersController.java @@ -137,6 +137,8 @@ public class SmsDispatchersController extends Handler { private final Context mContext; private final @NonNull FeatureFlags mFeatureFlags; + private TelephonyManager mTelephonyManager; + /** true if IMS is registered and sms is supported, false otherwise.*/ private boolean mIms = false; private String mImsSmsFormat = SmsConstants.FORMAT_UNKNOWN; @@ -657,9 +659,24 @@ public class SmsDispatchersController extends Handler { } } + private void updateImsInfo(AsyncResult ar) { int[] responseArray = (int[]) ar.result; - setImsSmsFormat(responseArray[1]); + int mcc, mnc; + + mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); + + String carrierMccMnc = mTelephonyManager.getNetworkOperator(); + + Rlog.d(TAG, "Fetched MCCMNC: " + carrierMccMnc); + + if ("20820".equals(carrierMccMnc) || "26003".equals(carrierMccMnc)) { + setImsSmsFormat(PhoneConstants.PHONE_TYPE_GSM); // Sets 3GPP format + Rlog.d(TAG, "Forced GSM format for carrier: " + carrierMccMnc); + } else { + setImsSmsFormat(responseArray[1]); + } + mIms = responseArray[0] == 1 && !SmsConstants.FORMAT_UNKNOWN.equals(mImsSmsFormat); Rlog.d(TAG, "IMS registration state: " + mIms + " format: " + mImsSmsFormat); }