Fix for GSM-8bit encoding error
Bug: 253538769 Test: atest android.telephony.cts.VisualVoicemailServiceTest Change-Id: I63dca4369c7b4285abb99bfffffe8fd9edbf9443 Merged-In: I63dca4369c7b4285abb99bfffffe8fd9edbf9443
This commit is contained in:
@@ -1019,6 +1019,17 @@ public class SmsMessage {
|
||||
return mWrappedSmsMessage.isReplyPathPresent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the encoding type of a received SMS message, which is specified using ENCODING_*
|
||||
* GSM: defined in android.telephony.SmsConstants
|
||||
* CDMA: defined in android.telephony.cdma.UserData
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public int getReceivedEncodingType() {
|
||||
return mWrappedSmsMessage.getReceivedEncodingType();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether or not to use CDMA format for MO SMS.
|
||||
* If SMS over IMS is supported, then format is based on IMS SMS format,
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.internal.telephony;
|
||||
|
||||
import static com.android.internal.telephony.SmsConstants.ENCODING_UNKNOWN;
|
||||
|
||||
import android.compat.annotation.UnsupportedAppUsage;
|
||||
import android.os.Build;
|
||||
import android.telephony.SmsMessage;
|
||||
@@ -93,6 +95,15 @@ public abstract class SmsMessageBase {
|
||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
|
||||
protected boolean mMwiDontStore;
|
||||
|
||||
/**
|
||||
* The encoding type of a received SMS message, which is specified using ENCODING_*
|
||||
* GSM: defined in android.telephony.SmsConstants
|
||||
* CDMA: defined in android.telephony.cdma.UserData
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
protected int mReceivedEncodingType = ENCODING_UNKNOWN;
|
||||
|
||||
/**
|
||||
* Indicates status for messages stored on the ICC.
|
||||
*/
|
||||
@@ -512,4 +523,8 @@ public abstract class SmsMessageBase {
|
||||
|
||||
return mRecipientAddress.getAddressString();
|
||||
}
|
||||
|
||||
public int getReceivedEncodingType() {
|
||||
return mReceivedEncodingType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -780,6 +780,7 @@ public class SmsMessage extends SmsMessageBase {
|
||||
mUserData = mBearerData.userData.payload;
|
||||
mUserDataHeader = mBearerData.userData.userDataHeader;
|
||||
mMessageBody = mBearerData.userData.payloadStr;
|
||||
mReceivedEncodingType = mBearerData.userData.msgEncoding;
|
||||
}
|
||||
|
||||
if (mOriginatingAddress != null) {
|
||||
@@ -860,6 +861,9 @@ public class SmsMessage extends SmsMessageBase {
|
||||
Rlog.w(LOG_TAG, "BearerData.decode() returned null");
|
||||
return null;
|
||||
}
|
||||
if (bData.userData != null) {
|
||||
mReceivedEncodingType = bData.userData.msgEncoding;
|
||||
}
|
||||
|
||||
if (Rlog.isLoggable(LOGGABLE_TAG, Log.VERBOSE)) {
|
||||
Rlog.d(LOG_TAG, "MT raw BearerData = " + HexDump.toHexString(mEnvelope.bearerData));
|
||||
|
||||
@@ -1396,28 +1396,28 @@ public class SmsMessage extends SmsMessageBase {
|
||||
} else {
|
||||
switch ((mDataCodingScheme >> 2) & 0x3) {
|
||||
case 0: // GSM 7 bit default alphabet
|
||||
encodingType = ENCODING_7BIT;
|
||||
break;
|
||||
encodingType = ENCODING_7BIT;
|
||||
break;
|
||||
|
||||
case 2: // UCS 2 (16bit)
|
||||
encodingType = ENCODING_16BIT;
|
||||
break;
|
||||
encodingType = ENCODING_16BIT;
|
||||
break;
|
||||
|
||||
case 1: // 8 bit data
|
||||
//Support decoding the user data payload as pack GSM 8-bit (a GSM alphabet string
|
||||
//that's stored in 8-bit unpacked format) characters.
|
||||
if (r.getBoolean(com.android.internal.
|
||||
R.bool.config_sms_decode_gsm_8bit_data)) {
|
||||
encodingType = ENCODING_8BIT;
|
||||
break;
|
||||
}
|
||||
// Support decoding the user data payload as pack GSM 8-bit (a GSM alphabet
|
||||
// string that's stored in 8-bit unpacked format) characters.
|
||||
if (r.getBoolean(com.android.internal
|
||||
.R.bool.config_sms_decode_gsm_8bit_data)) {
|
||||
encodingType = ENCODING_8BIT;
|
||||
break;
|
||||
}
|
||||
|
||||
case 3: // reserved
|
||||
Rlog.w(LOG_TAG, "1 - Unsupported SMS data coding scheme "
|
||||
+ (mDataCodingScheme & 0xff));
|
||||
encodingType = r.getInteger(
|
||||
com.android.internal.R.integer.default_reserved_data_coding_scheme);
|
||||
break;
|
||||
Rlog.w(LOG_TAG, "1 - Unsupported SMS data coding scheme "
|
||||
+ (mDataCodingScheme & 0xff));
|
||||
encodingType = r.getInteger(
|
||||
com.android.internal.R.integer.default_reserved_data_coding_scheme);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if ((mDataCodingScheme & 0xf0) == 0xf0) {
|
||||
@@ -1492,6 +1492,7 @@ public class SmsMessage extends SmsMessageBase {
|
||||
encodingType == ENCODING_7BIT);
|
||||
this.mUserData = p.getUserData();
|
||||
this.mUserDataHeader = p.getUserDataHeader();
|
||||
this.mReceivedEncodingType = encodingType;
|
||||
|
||||
/*
|
||||
* Look for voice mail indication in TP_UDH TS23.040 9.2.3.24
|
||||
|
||||
Reference in New Issue
Block a user