SmsMessage如何在Kotlin库中工作?

jqjz2hbq  于 2023-10-23  发布在  Kotlin
关注(0)|答案(1)|浏览(116)

我不明白这个类在接收新的短信时是如何工作的。
我的问题是,如果SMS正文中有一个“#”符号,那么消息的第一部分进入getDisplayMessageBody(),消息的第二部分进入getMessageBody()
我需要做什么才能收到所有的东西?在我看来,它不知何故奇怪的工作,虽然它是专为短信。
收到的SMS示例:一些文本作品#100%
如果我只读取getMessageBody(),我将得到以下文本:

100%

在get中,“getDisplayMessageBody()”将被存储:
一些文字作品

nmpmafwu

nmpmafwu1#

您所描述的行为可能是由于SMS消息的构造方式,特别是当涉及到像“#”这样的特殊字符时。
SMS消息可以有两个部分:用户数据头(UDH)和用户数据。UDH通常用于将多个SMS消息连接为一个消息或用于指示消息中的特殊格式。
SmsMessage类中的getMessageBody()和getDisplayMessageBody()可能具有不同的行为:
1.getMessageBody():此方法返回SMS的用户数据部分,其中包括文本消息本身。在您的示例中,它正确地返回“#100%”,因为这是用户数据的内容。
1.getDisplayMessageBody():此方法返回SMS的可显示部分,通常是要显示给用户的SMS内容。在您的示例中,它返回“Some text works”,因为UDH或任何特殊格式被剥离,这是通常显示给用户的SMS部分。
所以我觉得如果你想收到完整的信息,你必须把这两个连接起来:
在Kotlin中:

val fullMessage = smsMessage.displayMessageBody + smsMessage.messageBody

在Java中:

String fullMessage = smsMessage.getDisplayMessageBody() + smsMessage.getMessageBody();

相关问题