[automerger skipped] Carrier ID table rollout all_sdk_carrier_list_Rollout_20200610 am: e6bb99df75 -s ours

am skip reason: Change-Id Ieb482e6c5284731806acb1391857bcc1999b2f27 with SHA-1 a11bff98a3 is in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/providers/TelephonyProvider/+/11822582

Change-Id: Ie15d89cbbfe0c785f75c53281a718dda302259b7
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
deleted file mode 100644
index e69de29..0000000
--- a/MODULE_LICENSE_APACHE2
+++ /dev/null
diff --git a/assets/latest_carrier_id/carrier_list.pb b/assets/latest_carrier_id/carrier_list.pb
index 85fe556..7edf27a 100644
--- a/assets/latest_carrier_id/carrier_list.pb
+++ b/assets/latest_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/latest_carrier_id/carrier_list.textpb b/assets/latest_carrier_id/carrier_list.textpb
index 6b1143f..52fc821 100644
--- a/assets/latest_carrier_id/carrier_list.textpb
+++ b/assets/latest_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/assets/sdk30_carrier_id/carrier_list.pb b/assets/sdk30_carrier_id/carrier_list.pb
new file mode 100644
index 0000000..a5c1bbf
--- /dev/null
+++ b/assets/sdk30_carrier_id/carrier_list.pb
Binary files differ
diff --git a/assets/sdk30_carrier_id/carrier_list.textpb b/assets/sdk30_carrier_id/carrier_list.textpb
new file mode 100644
index 0000000..50ac074
--- /dev/null
+++ b/assets/sdk30_carrier_id/carrier_list.textpb
Binary files differ
diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java
index 81f732b..6ff16e5 100644
--- a/src/com/android/providers/telephony/SmsProvider.java
+++ b/src/com/android/providers/telephony/SmsProvider.java
@@ -353,20 +353,42 @@
                 type = Sms.MESSAGE_TYPE_OUTBOX;
                 break;
         }
+
+        String address = (type == Sms.MESSAGE_TYPE_INBOX)
+                ? message.getDisplayOriginatingAddress()
+                : message.getRecipientAddress();
+
+        int index = message.getIndexOnIcc();
+        if (address == null) {
+            // The status byte of an EF_SMS record may not be correct. try to read other address
+            // type again.
+            Log.e(TAG, "convertIccToSms: EF_SMS(" + index + ")=> address=null, type=" + type
+                    + ", status=" + statusOnIcc + "(may not be correct). fallback to other type.");
+            address = (type == Sms.MESSAGE_TYPE_INBOX)
+                    ? message.getRecipientAddress()
+                    : message.getDisplayOriginatingAddress();
+
+            if (address != null) {
+                // Rely on actual PDU(address) to set type again.
+                type = (type == Sms.MESSAGE_TYPE_INBOX)
+                        ? Sms.MESSAGE_TYPE_SENT
+                        : Sms.MESSAGE_TYPE_INBOX;
+                Log.d(TAG, "convertIccToSms: new type=" + type + ", address=xxxxxx");
+            } else {
+                Log.e(TAG, "convertIccToSms: no change");
+            }
+        }
+
         // N.B.: These calls must appear in the same order as the
         // columns appear in ICC_COLUMNS.
         Object[] row = new Object[13];
         row[0] = message.getServiceCenterAddress();
-        row[1] =
-                (type == Sms.MESSAGE_TYPE_INBOX)
-                        ? message.getDisplayOriginatingAddress()
-                        : message.getRecipientAddress();
-
+        row[1] = address;
         row[2] = String.valueOf(message.getMessageClass());
         row[3] = message.getDisplayMessageBody();
         row[4] = message.getTimestampMillis();
         row[5] = statusOnIcc;
-        row[6] = message.getIndexOnIcc();
+        row[6] = index;
         row[7] = message.isStatusReportMessage();
         row[8] = "sms";
         row[9] = type;
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 4966e5a..7cc518a 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -2010,7 +2010,7 @@
             int columnIndex = c.getColumnIndex(key);
             if (columnIndex != -1) {
                 String fromCursor = c.getString(columnIndex);
-                if (!TextUtils.isEmpty(fromCursor)) {
+                if (fromCursor != null) {
                     cv.put(key, fromCursor);
                 }
             }