From e519cd6e681cbdddec8a6aed248d876e9afaf08d Mon Sep 17 00:00:00 2001 From: Josh Hou Date: Fri, 23 Nov 2018 09:57:20 +0800 Subject: [PATCH] Refine APN fetching logic APN fetching logic has been encapsulated in URL_SIM_APN_LIST API in TelephonyProvider Bug: 115709816 Test: Live network test Change-Id: I735bc50e912dfbec0903fbcafdc4d6eaa6ccfc7b Merged-In: I735bc50e912dfbec0903fbcafdc4d6eaa6ccfc7b --- .../android/settings/network/ApnSettings.java | 71 +++++-------------- 1 file changed, 19 insertions(+), 52 deletions(-) diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java index 3b39e383ddc..1c02b0eb2cc 100755 --- a/src/com/android/settings/network/ApnSettings.java +++ b/src/com/android/settings/network/ApnSettings.java @@ -42,7 +42,6 @@ import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.telephony.data.ApnSetting; import android.text.TextUtils; import android.util.Log; import android.view.Menu; @@ -54,8 +53,6 @@ import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.TelephonyIntents; -import com.android.internal.telephony.dataconnection.ApnSettingUtils; -import com.android.internal.telephony.uicc.IccRecords; import com.android.internal.telephony.uicc.UiccController; import com.android.settings.R; import com.android.settings.RestrictedSettingsFragment; @@ -277,34 +274,27 @@ public class ApnSettings extends RestrictedSettingsFragment { } private void fillList() { - final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); final int subId = mSubscriptionInfo != null ? mSubscriptionInfo.getSubscriptionId() : SubscriptionManager.INVALID_SUBSCRIPTION_ID; - final String mccmnc = mSubscriptionInfo == null ? "" : tm.getSimOperator(subId); - Log.d(TAG, "mccmnc = " + mccmnc); - StringBuilder where = new StringBuilder("numeric=\"" + mccmnc + - "\" AND NOT (type='ia' AND (apn=\"\" OR apn IS NULL)) AND user_visible!=0"); + final Uri simApnUri = Uri.withAppendedPath(Telephony.Carriers.SIM_APN_LIST, + String.valueOf(subId)); + StringBuilder where = new StringBuilder("NOT (type='ia' AND (apn=\"\" OR apn IS NULL)) AND " + + "user_visible!=0"); if (mHideImsApn) { where.append(" AND NOT (type='ims')"); } - Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, - CARRIERS_PROJECTION, where.toString(), null, Telephony.Carriers.DEFAULT_SORT_ORDER); + Cursor cursor = getContentResolver().query(simApnUri, + CARRIERS_PROJECTION, where.toString(), null, + Telephony.Carriers.DEFAULT_SORT_ORDER); if (cursor != null) { - IccRecords r = null; - if (mUiccController != null && mSubscriptionInfo != null) { - r = mUiccController.getIccRecords( - SubscriptionManager.getPhoneId(subId), UiccController.APP_FAM_3GPP); - } - PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list"); - apnList.removeAll(); + PreferenceGroup apnPrefList = (PreferenceGroup) findPreference("apn_list"); + apnPrefList.removeAll(); - ArrayList mnoApnList = new ArrayList(); - ArrayList mvnoApnList = new ArrayList(); - ArrayList mnoMmsApnList = new ArrayList(); - ArrayList mvnoMmsApnList = new ArrayList(); + ArrayList apnList = new ArrayList(); + ArrayList mmsApnList = new ArrayList(); mSelectedKey = getSelectedApnKey(); cursor.moveToFirst(); @@ -313,9 +303,9 @@ public class ApnSettings extends RestrictedSettingsFragment { String apn = cursor.getString(APN_INDEX); String key = cursor.getString(ID_INDEX); String type = cursor.getString(TYPES_INDEX); - String mvnoType = cursor.getString(MVNO_TYPE_INDEX); - String mvnoMatchData = cursor.getString(MVNO_MATCH_DATA_INDEX); int edited = cursor.getInt(EDITED_INDEX); + mMvnoType = cursor.getString(MVNO_TYPE_INDEX); + mMvnoMatchData = cursor.getString(MVNO_MATCH_DATA_INDEX); ApnPreference pref = new ApnPreference(getPrefContext()); @@ -335,43 +325,20 @@ public class ApnSettings extends RestrictedSettingsFragment { if ((mSelectedKey != null) && mSelectedKey.equals(key)) { pref.setChecked(); } - addApnToList(pref, mnoApnList, mvnoApnList, r, mvnoType, mvnoMatchData); + apnList.add(pref); } else { - addApnToList(pref, mnoMmsApnList, mvnoMmsApnList, r, mvnoType, mvnoMatchData); + mmsApnList.add(pref); } cursor.moveToNext(); } cursor.close(); - if (!mvnoApnList.isEmpty()) { - mnoApnList = mvnoApnList; - mnoMmsApnList = mvnoMmsApnList; - - // Also save the mvno info + for (Preference preference : apnList) { + apnPrefList.addPreference(preference); } - - for (Preference preference : mnoApnList) { - apnList.addPreference(preference); + for (Preference preference : mmsApnList) { + apnPrefList.addPreference(preference); } - for (Preference preference : mnoMmsApnList) { - apnList.addPreference(preference); - } - } - } - - private void addApnToList(ApnPreference pref, ArrayList mnoList, - ArrayList mvnoList, IccRecords r, String mvnoType, - String mvnoMatchData) { - if (r != null && !TextUtils.isEmpty(mvnoType) && !TextUtils.isEmpty(mvnoMatchData)) { - if (ApnSettingUtils.mvnoMatches(r, ApnSetting.getMvnoTypeIntFromString(mvnoType), - mvnoMatchData)) { - mvnoList.add(pref); - // Since adding to mvno list, save mvno info - mMvnoType = mvnoType; - mMvnoMatchData = mvnoMatchData; - } - } else { - mnoList.add(pref); } }