2011-07-05 8 views
36

Cómo enviar SMS grandes en android. Utilicé:¿Cómo enviar el SMS de más de 160 caracteres?

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

Este código funciona solo para mensajes de 160 caracteres. También uso

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

Pero envía un carácter basura en el mensaje. ¿Alguien puede ayudarme?

+0

¡¡¡Estoy haciendo algo similar AQUÍ !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-sms-mms-in-android – toobsco42

Respuesta

31

basura? método sendMultipartTextMessage solo envía mensaje de texto. Si desea enviar mensajes que no sean de texto, debe consultar el método sendDataMessage. A continuación se muestra el extracto del código de android cts. Tiene un ejemplo sobre cómo enviar mensajes largos.

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

Ya lo intento y también lo puse en mi pregunta. Sin duda, este código divide el mensaje y lo envía, pero en el otro lado aparece un mensaje con algunos caracteres no admitidos. –

+0

parece similar al problema que encuentra, pero ellos reclaman solo en el simulador. http://code.google.com/p/android/issues/detail?id=13737 – Jasonw

+0

yap también tengo el mismo problema, pero no puedo entender lo que dijo para enviar un mensaje largo sin un carácter basura. –

42

Try a continuación código podría ayudar caracteres

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

uso esto pero envía caracteres no deseados en el mensaje. –

+0

este código está funcionando excelente para mí. (Android 2.3.6, Samsung galaxy Ace), muchas gracias por compartir. –

+0

Esto también funciona para mí, gracias. Nexus S ejecuta 4.2 Jelly Bean en un viejo teléfono Alcatel. – Peanut

3

El emulador enviar los caracteres basura en ese código durante cierto problema a fin de utilizar apk en móvil real, y comprobar el código, estoy seguro de que su aplicación no enviará basura message..All la mejor.

0

Debe obtener un código corto específico de SMSC, para enviar mensajes de texto que tengan caracteres de más de 160.

Cuestiones relacionadas