如何发送160字以上的短信?

问题描述 投票:39回答:5

如何在安卓系统中发送大短信。我用的是.NET代码。

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);

但它在信息中发送的是垃圾字符。谁能帮帮我?

android sms
5个回答
34
投票

垃圾字符? 方法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)

49
投票

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

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

3
投票

仿真器在某些问题上会发送该代码中的垃圾字符,所以在真实的手机上使用apk,并检查该代码,我相信你的应用程序不会发送垃圾信息。


0
投票

你应该从SMSC获得特定的短码,用于发送字符数超过160的短信。

© www.soinside.com 2019 - 2024. All rights reserved.