sendMultipartTextMessage作为多条短信发送?

时间:2015-07-02 08:05:14

标签: java android sms android-5.0-lollipop android-4.4-kitkat

我使用以下代码在Android中发送长短信:

SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);

问题是,在Lollipop 5.0之前的手机上(主要是在Kitkat 4.4上注意到),SMS是作为两个独立的短信而不是连接(多部分)短信发送的。

在运行Lollipop 5.0+的手机上,邮件是否以长短信息正确发送?

我在两个完全相同的型号手机上测试了这个,一个运行4.4 Kitkat,另一个用5.0 Lollipop更新,并且出现上述相同的行为?有没有人注意到这个或找到了决议?

2 个答案:

答案 0 :(得分:2)

  

&#34;每条SMS文本消息的最大长度可能因运营商而异,但通常限制为160个字符。因此,需要将较长的消息分成一系列较小的部分。 protocol SomeBody { var name: String { get set } } ... class XXViewController { @IBOutlet weak var someLabel:UILabel! var someOne: SomeBody { didSet { RACObserve(someOne, "name").subscribeNext { [weak self](name) -> Void in self?.someLabel.text = name as! String } } } .... } 包含SmsManager方法,该方法接受字符串作为输入并将其分解为divideMessage()条消息,其中每个部分都小于允许的最大大小。

     

然后,我们可以在ArrayList上使用sendMultipartTextMessage()方法传输消息数组......&#34;

取自:http://www.compiletimeerror.com/2013/10/send-multiparttextmessge-in-android.html?m=1

答案 1 :(得分:2)

当邮件足够长,通常超过160个字符时,它会作为单独的SMS消息发送,而在GSM网络上会添加一些额外的元数据,称为用户数据标头(UDH),它告诉接收者应该合并单独的消息。

您希望发生的是接收器将它们组合回单个消息中。请注意,接收器将它们组合在一起,以便您需要查看它们。据我所知,Lollipop中sendMultipartTextMessage的行为与KitKat中的行为相同。