2011-07-05 11 views
36

Jak wysłać duże wiadomości SMS na Androida. Użyłem:Jak wysłać SMS o więcej niż 160 znakach?

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

ten kod działa tylko dla wiadomości o 160 znakach. Używam także

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

Ale wysyła wiadomość śmieci. Czy ktoś może mi pomóc?

+0

Robię coś podobnego TUTAJ !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-sms-mms-in-android – toobsco42

Odpowiedz

31

Junk? Metoda sendMultipartTextMessage wysyła tylko wiadomość o treści: tekst. Jeśli chcesz wysłać wiadomość tekstową, powinieneś przejrzeć metodę sendDataMessage. Poniżej znajduje się fragment kodu z Androida cts. Ma przykład, jak wysyłać długie wiadomości.

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

Już próbuję tego i również umieścić go w moim pytaniu. Bez wątpienia ten kod dzieli wiadomość i wysyła ją, ale po drugiej stronie pojawia się komunikat z nieobsługiwanymi znakami. –

+0

wydają się być podobne do napotkanego problemu, ale twierdzą, że tylko na symulatorze. http://code.google.com/p/android/issues/detail?id=13737 – Jasonw

+0

Tak, ja też mam ten sam problem, ale nie mogę zrozumieć, co on powiedział, aby wysłać długą wiadomość bez znaku śmieciowego. –

42

Spróbuj poniżej kod może pomóc znaków

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

Używam tego, ale wysyłam wiadomości-śmieci w wiadomości. –

+0

ten kod działa doskonale dla mnie. (Android 2.3.6, Samsung Galaxy Ace), bardzo dziękuję za udostępnianie. –

+0

To działa również dla mnie, dziękuję, Nexus S działa 4.2 Jelly Bean na stary telefon Alcatel. – Peanut

3

Emulator wysyła znaki śmieci w tym kodzie podczas pewnego problemu więc używać apk w prawdziwym komórkowego i sprawdzić kod, jestem pewien, że aplikacja nie wyśle ​​śmieci message..All najlepszy.

0

Powinieneś otrzymać specjalny Short Code z SMSC, za wysłanie SMS-a o większej liczbie znaków niż 160.

Powiązane problemy