From bd3b711acafc8bc28827b95ebc2e6fed023f7fc1 Mon Sep 17 00:00:00 2001 From: Taesu Lee Date: Fri, 19 Jun 2020 15:09:31 +0900 Subject: [PATCH] Fix handling format based on API level accordingly. Use SmsMessage#createFromPdu(pdu, format) at least on M and replace SmsMessage#FORMAT_3GPP2 with "3gpp2". - SmsMessage#createFromPdu(pdu, format) is added in API level 23. - SmsMessage#FORMAT_3GPP2 is added in API level 28. Test: Manual Signed-off-by: Taesu Lee Change-Id: Icab2c6c3c86ee8b6597881bfac6066fed60db4d2 --- .../android/messaging/receiver/SendStatusReceiver.java | 2 +- src/com/android/messaging/sms/MmsUtils.java | 4 +++- src/com/android/messaging/util/DebugUtils.java | 9 ++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/com/android/messaging/receiver/SendStatusReceiver.java b/src/com/android/messaging/receiver/SendStatusReceiver.java index c1b2bca..8d2e10f 100644 --- a/src/com/android/messaging/receiver/SendStatusReceiver.java +++ b/src/com/android/messaging/receiver/SendStatusReceiver.java @@ -87,7 +87,7 @@ public class SendStatusReceiver extends BroadcastReceiver { final String format = intent.getStringExtra("format"); status = smsMessage.getStatus(); // Simple matching up CDMA status with GSM status. - if (SmsMessage.FORMAT_3GPP2.equals(format)) { + if ("3gpp2".equals(format)) { final int errorClass = (status >> 24) & 0x03; final int statusCode = (status >> 16) & 0x3f; switch (errorClass) { diff --git a/src/com/android/messaging/sms/MmsUtils.java b/src/com/android/messaging/sms/MmsUtils.java index e8e8713..75a01dd 100644 --- a/src/com/android/messaging/sms/MmsUtils.java +++ b/src/com/android/messaging/sms/MmsUtils.java @@ -1156,7 +1156,9 @@ public class MmsUtils { public static SmsMessage getSmsMessageFromDeliveryReport(final Intent intent) { final byte[] pdu = intent.getByteArrayExtra("pdu"); final String format = intent.getStringExtra("format"); - return SmsMessage.createFromPdu(pdu, format); + return OsUtil.isAtLeastM() + ? SmsMessage.createFromPdu(pdu, format) + : SmsMessage.createFromPdu(pdu); } /** diff --git a/src/com/android/messaging/util/DebugUtils.java b/src/com/android/messaging/util/DebugUtils.java index 0d689fe..6e33f48 100644 --- a/src/com/android/messaging/util/DebugUtils.java +++ b/src/com/android/messaging/util/DebugUtils.java @@ -302,11 +302,10 @@ public class DebugUtils { final int length = dis.readInt(); final byte[] pdu = new byte[length]; dis.read(pdu, 0, length); - if (format == null) { - messagesTemp[i] = SmsMessage.createFromPdu(pdu); - } else { - messagesTemp[i] = SmsMessage.createFromPdu(pdu, format); - } + messagesTemp[i] = + OsUtil.isAtLeastM() + ? SmsMessage.createFromPdu(pdu, format) + : SmsMessage.createFromPdu(pdu); } messages = messagesTemp; } catch (final FileNotFoundException e) {