2011-07-05 45 views
36

如何在android中發送大型短信。我使用:如何發送超過160個字符的短信?

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

但它發送郵件中的垃圾字符。 任何人都可以幫助我嗎?

+0

我在做類似的事情! http://stackoverflow.com/questions/14452808/sending-and-receiving-sms-mms-in-android – toobsco42

回答

31

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

我已經試過這個,也把它放在我的問題。毫無疑問,這段代碼拆分消息併發送它,但是在另一側消息帶有一些消息中不支持的字符。 –

+0

看起來像你遇到的問題類似,但他們只聲稱在模擬器上。 http://code.google.com/p/android/issues/detail?id=13737 – Jasonw

+0

邑我也有同樣的問題,但我不明白他說什麼發送長消息與垃圾字符。 –

42

試試下面的代碼可能會幫助

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

我使用這個,但它發送消息中的垃圾字符。 –

+0

這段代碼對我來說非常適合。 (android 2.3.6,三星galaxy ace),非常感謝分享。 –

+0

這對我很有用,謝謝,Nexus S將4.2果凍豆運行到一箇舊的阿爾卡特手機上。 – Peanut

3

模擬器某些問題時發送該代碼的垃圾字符,以便使用APK在真正的移動,並檢查代碼,我相信,你的應用程序不會發送垃圾message..All最好的。

0

您應該從SMSC獲取特定的短代碼,用於發送超過160個字符的短信。