diff options
| author | 2022-10-12 21:33:01 +0000 | |
|---|---|---|
| committer | 2022-10-12 21:45:22 +0000 | |
| commit | 5d01657a0b210b46b5dd9e8aa55edbc1f84a1228 (patch) | |
| tree | b681665180e1b66272867f47935bc33c4f0f6189 | |
| parent | 7bc45de276a8de2104706e51a6e81384613bc5bb (diff) | |
Fix for NullPointerException in SmsMessage
Bug: 120766197
Test: run the following tests:
- atest android.telephony.cts.SmsMessageTest
- manual: send and receive SMS
Change-Id: I197681cf79bbe47521d77432ffcd56d3e3acceab
| -rw-r--r-- | telephony/java/android/telephony/SmsMessage.java | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java index e0145e661660..c2b65f86ff02 100644 --- a/telephony/java/android/telephony/SmsMessage.java +++ b/telephony/java/android/telephony/SmsMessage.java @@ -1092,6 +1092,11 @@ public class SmsMessage { if (!TextUtils.isEmpty(simOperator)) { for (NoEmsSupportConfig currentConfig : mNoEmsSupportConfigList) { + if (currentConfig == null) { + Rlog.w("SmsMessage", "hasEmsSupport currentConfig is null"); + continue; + } + if (simOperator.startsWith(currentConfig.mOperatorNumber) && (TextUtils.isEmpty(currentConfig.mGid1) || (!TextUtils.isEmpty(currentConfig.mGid1) && @@ -1155,18 +1160,21 @@ public class SmsMessage { private static boolean mIsNoEmsSupportConfigListLoaded = false; private static boolean isNoEmsSupportConfigListExisted() { - if (!mIsNoEmsSupportConfigListLoaded) { - Resources r = Resources.getSystem(); - if (r != null) { - String[] listArray = r.getStringArray( - com.android.internal.R.array.no_ems_support_sim_operators); - if ((listArray != null) && (listArray.length > 0)) { - mNoEmsSupportConfigList = new NoEmsSupportConfig[listArray.length]; - for (int i=0; i<listArray.length; i++) { - mNoEmsSupportConfigList[i] = new NoEmsSupportConfig(listArray[i].split(";")); + synchronized (SmsMessage.class) { + if (!mIsNoEmsSupportConfigListLoaded) { + Resources r = Resources.getSystem(); + if (r != null) { + String[] listArray = r.getStringArray( + com.android.internal.R.array.no_ems_support_sim_operators); + if ((listArray != null) && (listArray.length > 0)) { + mNoEmsSupportConfigList = new NoEmsSupportConfig[listArray.length]; + for (int i = 0; i < listArray.length; i++) { + mNoEmsSupportConfigList[i] = new NoEmsSupportConfig( + listArray[i].split(";")); + } } + mIsNoEmsSupportConfigListLoaded = true; } - mIsNoEmsSupportConfigListLoaded = true; } } |