Skip to content

Commit f8563f5

Browse files
Jake HambyThe Android Open Source Project
authored andcommitted
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 a3ed3b6 commit f8563f5

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)