Skip to content

Commit 15c257e

Browse files
author
Jake Hamby
committed
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
1 parent c750403 commit 15c257e

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

telephony/java/com/android/internal/telephony/cdma/SmsMessage.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,13 @@ public static TextEncodingDetails calculateLength(CharSequence messageBody,
468468
* {@link com.android.internal.telephony.cdma.sms.SmsEnvelope#MESSAGE_TYPE_ACKNOWLEDGE},
469469
*/
470470
/* package */ int getMessageType() {
471-
return mEnvelope.messageType;
471+
// NOTE: mEnvelope.messageType is not set correctly for cell broadcasts with some RILs.
472+
// Use the service category parameter to detect CMAS and other cell broadcast messages.
473+
if (mEnvelope.serviceCategory != 0) {
474+
return SmsEnvelope.MESSAGE_TYPE_BROADCAST;
475+
} else {
476+
return SmsEnvelope.MESSAGE_TYPE_POINT_TO_POINT;
477+
}
472478
}
473479

474480
/**

0 commit comments

Comments
 (0)