您描述的行为可能与短信的构造方式有关,尤其是涉及"#"等特殊字符时.
SMS消息可以有两个部分:用户数据报头(UDH)和用户数据.UDH通常用于将多条短信连接成一条短信,或用于指示短信中的特殊格式.
SmsMessage类中的getMessageBody()和getDisplayMessageBody()可能具有不同的行为:
100():该方法返回短信的用户数据部分,包括文本消息本身.在您的示例中,它正确地返回"#getMessageBody%",因为这是用户数据的内容.
100():此方法返回短信的可显示部分,通常是要显示给用户的短信内容.在您的示例中,它返回"Some Text Works",因为UDH或任何特殊格式都被go 掉了,这是通常显示给用户的短信部分.
因此,我认为如果你想接收完整的消息,你必须将这两者连接在一起:
在Kotlin :
val fullMessage = smsMessage.displayMessageBody + smsMessage.messageBody
在Java中:
String fullMessage = smsMessage.getDisplayMessageBody() + smsMessage.getMessageBody();