如何发送超过160个字符的短信?

39

如何在Android发送大短信。我使用了:

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(contactNos[j], null,msgs[i], sentPI, deliveredPI);

这段代码只适用于160个字符的消息。我也使用了

ArrayList<String> msgsplit=sms.divideMessage(msgs[i]);
ArrayList<PendingIntent> listOfIntents = new ArrayList<PendingIntent>(); 

for (int k=0; k < msgsplit.size(); k++){  
    Intent sentIntent = new Intent(); 
    PendingIntent pi = PendingIntent.getBroadcast(MultipleMsg.this, 0, sentIntent, PendingIntent.FLAG_CANCEL_CURRENT);  
    listOfIntents.add(pi);  
}
// sendMessage(contactNos[j],msgs[i]);
sms.sendMultipartTextMessage(contactNos[j],null,msgsplit, listOfIntents, null);

但它在消息中发送了垃圾字符。有人能帮忙吗?


我正在这里做类似的事情!!! https://dev59.com/j-o6XIcBkEYKwwoYORwV - Etienne Lawlor
4个回答

51

尝试下面的代码可能有帮助

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

我使用这个,但是它在消息中发送垃圾字符。 - Girish Bhutiya
这段代码在我的 Android 2.3.6 三星 Galaxy Ace 上运行得非常好,非常感谢您的分享。 - VISHAL VIRADIA
这对我也有效,感谢。将 Nexus S 运行的 4.2 版本的 Jelly Bean 转移到旧的 Alcatel 手机上。 - Peanut
最新的操作系统 - Nexus 5 上工作,干杯! - Ben O
@ingsaurabh:我尝试了这段代码,它可以工作。但是,在我发送消息的手机上,它会留下一条未发送的消息,同时也发送了同样的消息。 - Milan M.

35

出现乱码?方法sendMultipartTextMessage只能发送文本消息。如果你想发送非文本消息,应该查看sendDataMessage方法。以下是来自Android cts的代码摘录,其中有关于如何发送长消息的示例。

SmsManager sm = SmsManager.getDefault();
ArrayList<String> parts =sm.divideMessage(LONG_TEXT);
int numParts = parts.size();

ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();

for (int i = 0; i < numParts; i++) {
sentIntents.add(PendingIntent.getBroadcast(getContext(), 0, mSendIntent, 0));
deliveryIntents.add(PendingIntent.getBroadcast(getContext(), 0, mDeliveryIntent, 0));
}

sm.sendMultiPartTextMessage(mDestAddr,null, parts, sentIntents, deliveryIntents)

我已经尝试过这个方法并且在我的问题中也提到了。毫无疑问,这段代码可以分割消息并发送它,但是在接收端,消息中会出现一些不支持的字符。 - Girish Bhutiya
看起来与您遇到的问题类似,但他们声称只在模拟器上出现。http://code.google.com/p/android/issues/detail?id=13737 - Jasonw
嗯,我也有同样的问题,但我不明白他说什么才能发送不带垃圾字符的长消息。 - Girish Bhutiya
1
这个程序在真实设备上运行。设备不会发送垃圾字符,并且可以正常工作,没有任何问题。 - Girish Bhutiya

3

模拟器在某些问题时发送了该代码中的垃圾字符,因此请在真实手机上使用apk并检查代码,我相信您的应用程序不会发送垃圾消息。祝一切顺利。


0

如果要发送超过160个字符的短信,您应该从SMSC获取特定的短代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接