Merge "Fix inconsistent columns when appending cursor data" am: 9252fd8f25 am: 2bd9cefb2b am: a4b3b2b6e2
Change-Id: Iaff372e790f59f8c0b7c90494ad62e70f5dd0325
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 98ba491..2e0b972 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -3118,25 +3118,31 @@
int mvnoDataIndex = ret.getColumnIndex(MVNO_MATCH_DATA);
int carrierIdIndex = ret.getColumnIndex(CARRIER_ID);
- //Separate the result into MatrixCursor
+ // Separate the result into MatrixCursor
while (ret.moveToNext()) {
List<String> data = new ArrayList<>();
for (String column : columnNames) {
data.add(ret.getString(ret.getColumnIndex(column)));
}
- if (!TextUtils.isEmpty(ret.getString(numericIndex)) &&
- tm.isCurrentSimOperator(ret.getString(numericIndex),
- getMvnoTypeIntFromString(ret.getString(mvnoIndex)),
- ret.getString(mvnoDataIndex))) {
+ boolean isMVNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
+ && tm.isCurrentSimOperator(ret.getString(numericIndex),
+ getMvnoTypeIntFromString(ret.getString(mvnoIndex)),
+ ret.getString(mvnoDataIndex));
+ boolean isMNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
+ && ret.getString(numericIndex).equals(mccmnc)
+ && TextUtils.isEmpty(ret.getString(mvnoIndex));
+ boolean isCarrierIdAPN = !TextUtils.isEmpty(ret.getString(carrierIdIndex))
+ && ret.getString(carrierIdIndex).equals(String.valueOf(carrierId))
+ && carrierId != TelephonyManager.UNKNOWN_CARRIER_ID;
+
+ if (isMVNOAPN) {
// 1. The APN that query based on legacy SIM MCC/MCC and MVNO
currentCursor.addRow(data);
- } else if (!TextUtils.isEmpty(ret.getString(numericIndex))
- && TextUtils.isEmpty(ret.getString(mvnoIndex))) {
+ } else if (isMNOAPN) {
// 2. The APN that query based on SIM MCC/MNC
parentCursor.addRow(data);
- } else if (!TextUtils.isEmpty(ret.getString(carrierIdIndex))
- && ret.getString(carrierIdIndex).equals(String.valueOf(carrierId))) {
+ } else if (isCarrierIdAPN) {
// The APN that query based on carrier Id (not include the MVNO or MNO APN)
carrierIdCursor.addRow(data);
}
@@ -3166,8 +3172,6 @@
for (String column : to.getColumnNames()) {
int index = to.getColumnIndex(column);
switch (to.getType(index)) {
- case Cursor.FIELD_TYPE_NULL:
- break;
case Cursor.FIELD_TYPE_INTEGER:
data.add(to.getInt(index));
break;
@@ -3178,6 +3182,7 @@
data.add(to.getBlob(index));
break;
case Cursor.FIELD_TYPE_STRING:
+ case Cursor.FIELD_TYPE_NULL:
data.add(to.getString(index));
break;
}