Skip to content

Commit 54e963a

Browse files
Jake HambyThe Android Automerger
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 bf82980 commit 54e963a

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)