From 83fd7b0d53f2fecb5b92cb911910e07659e246ca Mon Sep 17 00:00:00 2001 From: John Joseph Date: Tue, 15 Dec 2009 15:23:23 -0800 Subject: [PATCH] frameworks/base: Handle broadcast sms properly Broadcast SMS does not have teleservice id field. Add support to identify broadcast SMS based on message type. --- .../internal/telephony/cdma/CdmaSMSDispatcher.java | 3 ++- .../android/internal/telephony/cdma/SmsMessage.java | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java index aee45bffa3e8c..ed93aea189887 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java @@ -167,7 +167,8 @@ final class CdmaSMSDispatcher extends SMSDispatcher { // not yet been handled and also do not correspond to the two // kinds that are processed below. if ((SmsEnvelope.TELESERVICE_WMT != teleService) && - (SmsEnvelope.TELESERVICE_WEMT != teleService)) { + (SmsEnvelope.TELESERVICE_WEMT != teleService) && + (SmsEnvelope.MESSAGE_TYPE_BROADCAST != sms.getMessageType())) { return Intents.RESULT_SMS_UNSUPPORTED; } diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java index 3e491d1442dcf..403b7a1d16d3e 100755 --- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java +++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java @@ -458,10 +458,21 @@ public class SmsMessage extends SmsMessageBase { * {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#TELESERVICE_VMN}, * {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#TELESERVICE_WAP} */ - public int getTeleService() { + /* package */ int getTeleService() { return mEnvelope.teleService; } + /** + * Returns the message type of the message. + * @return the message type: + * {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_POINT_TO_POINT}, + * {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_BROADCAST}, + * {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_ACKNOWLEDGE}, + */ + /* package */ int getMessageType() { + return mEnvelope.messageType; + } + /** * Decodes pdu to an empty SMS object. * In the CDMA case the pdu is just an internal byte stream representation