我使用以下代码在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更新,并且出现上述相同的行为?有没有人注意到这个或找到了决议?
答案 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中的行为相同。