From 15c257eb8f077fc4f6c95f8a7bc84dd9a7b39c61 Mon Sep 17 00:00:00 2001 From: Jake Hamby Date: Mon, 23 Jul 2012 14:42:33 -0700 Subject: Fix detection of CDMA cell broadcast messages. The bIsServicePresent field of an incoming CDMA SMS RIL message is not a reliable way to distinguish broadcast from point-to-point messages on some RILs. Change CDMA SmsMessage.getMessageType() to return MESSAGE_TYPE_BROADCAST when the service category is not 0, and MESSAGE_TYPE_POINT_TO_POINT when the service category is 0. Bug: 6853691 Change-Id: I0d44a8ce0bb295da5125271db90652570d655bc1 --- .../java/com/android/internal/telephony/cdma/SmsMessage.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java index a723de3543c3..7292b86b9f42 100644 --- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java +++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java @@ -468,7 +468,13 @@ public class SmsMessage extends SmsMessageBase { * {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_ACKNOWLEDGE}, */ /* package */ int getMessageType() { - return mEnvelope.messageType; + // NOTE: mEnvelope.messageType is not set correctly for cell broadcasts with some RILs. + // Use the service category parameter to detect CMAS and other cell broadcast messages. + if (mEnvelope.serviceCategory != 0) { + return SmsEnvelope.MESSAGE_TYPE_BROADCAST; + } else { + return SmsEnvelope.MESSAGE_TYPE_POINT_TO_POINT; + } } /** -- cgit v1.2.3-59-g8ed1b