Vengo del desarrollo de iphone donde no puedes enviar un SMS en segundo plano sin pedirle al usuario que confirme el envío. ¿Se pueden enviar sms en segundo plano en Android para que no se necesite intervención del usuario?¿Cómo puedo enviar mensajes SMS en el ANTECEDENTES usando Android?
Respuesta
Enviar SMS con la notificación de entrega de SMS como tostado.
método llamar como abajo.
sendSMS("98********","This is test message");
firma del método como abajo.
/*
* BroadcastReceiver mBrSend; BroadcastReceiver mBrReceive;
*/
private void sendSMS(String phoneNumber, String message) {
ArrayList<PendingIntent> sentPendingIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveredPendingIntents = new ArrayList<PendingIntent>();
PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0,
new Intent(mContext, SmsSentReceiver.class), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(mContext, 0,
new Intent(mContext, SmsDeliveredReceiver.class), 0);
try {
SmsManager sms = SmsManager.getDefault();
ArrayList<String> mSMSMessage = sms.divideMessage(message);
for (int i = 0; i < mSMSMessage.size(); i++) {
sentPendingIntents.add(i, sentPI);
deliveredPendingIntents.add(i, deliveredPI);
}
sms.sendMultipartTextMessage(phoneNumber, null, mSMSMessage,
sentPendingIntents, deliveredPendingIntents);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getBaseContext(), "SMS sending failed...",Toast.LENGTH_SHORT).show();
}
}
Ahora dos clases más SmsDeliveredReceiver, SmsSentReceiver como a continuación.
public class SmsDeliveredReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "SMS delivered", Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(context, "SMS not delivered", Toast.LENGTH_SHORT).show();
break;
}
}
}
Ahora SMSSentReceiver.
public class SmsSentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "SMS Sent", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(context, "SMS generic failure", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(context, "SMS no service", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(context, "SMS null PDU", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(context, "SMS radio off", Toast.LENGTH_SHORT).show();
break;
}
}
}
ahora Permisos de abrir su AndroidManifest.xml y añadir debajo de la línea
<uses-permission android:name="android.permission.SEND_SMS"/>
y su hecho .......
Ver http://thinkandroid.wordpress.com/2010/01/08/sending-sms-from-application/. Necesitarás los permisos apropiados.
Gracias por el enlace. Pero el artículo no explicaba si podía enviar los sms en segundo plano – Zubair
Puede usar esa lógica de un 'Servicio' o' BroadcastReceiver' que es el fondo de manera efectiva (a menos que tenga una idea diferente de fondo). Si dices más sobre específicamente lo que estás tratando de hacer? – Femi
¿Quiere decir que podemos copiar el código de las clases de BroadcastReceiver o Service? – Zubair
Sí, tú también puedes.
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage(number, null, message, null, null);
mejor respuesta es buena, pero por encima de API nivel 23 necesitarás obtener el permiso pragmáticamente. De lo contrario, se solicitará permiso cada vez.
private static final int PERMISSION_REQUEST_CODE = 1;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.SEND_SMS)
== PackageManager.PERMISSION_DENIED) {
Log.d("permission", "permission denied to SEND_SMS - requesting it");
String[] permissions = {Manifest.permission.SEND_SMS};
requestPermissions(permissions, PERMISSION_REQUEST_CODE);
}
}
- 1. Cómo enviar mensajes SMS desde un servidor
- 2. Android enviando muchos mensajes SMS
- 3. Android 1.5: leer mensajes SMS
- 4. Cómo enviar/recibir SMS usando comandos AT?
- 5. ¿Puedo enviar "SMS recibido intento"?
- 6. Cómo enviar y recibir mensajes SMS de datos
- 7. Android - Escuchar mensajes SMS entrantes
- 8. ¿Cómo puedo enviar un SMS desde Java?
- 9. Cómo enviar/recibir mensajes SMS desde la aplicación C#, usando el teléfono móvil Nokia
- 10. Android enviar SMS automáticamente al hacer clic en el botón
- 11. ¿Cómo enviar sms al apagar el teléfono en Android?
- 12. Módem GSM enviar SMS
- 13. pjsip enviar sms a
- 14. Enviando mensajes automáticos SMS
- 15. ¿Cómo leer mensajes SMS en iOS?
- 16. No se puede enviar SMS con SMSManager en Android
- 17. Android: ¿Enviar SMS y hacer que aparezca en la bandeja de entrada de SMS?
- 18. ¿De alguna manera puedo enviar SMS?
- 19. Limitaciones en los mensajes SMS enviados usando correo electrónico gratuito-> pasarelas SMS
- 20. Clase 0 SMS (SMS flash) en Android
- 21. Enviar SMS a través de PhoneGap en Android
- 22. ¿Cómo enviar el SMS de más de 160 caracteres?
- 23. ¿Cómo enviar SMS usando la aplicación Python/Django?
- 24. Contenido de Android SMS (contenido: // sms/enviado)
- 25. Estructura de datos utilizada para mensajes SMS en Android
- 26. Cómo enviar mensajes de texto en android mediante sip
- 27. Enviar SMS C# .net
- 28. Cualquier SMS API está disponible para Android para enviar SMS desde la aplicación de Android?
- 29. ¿Es posible enviar SMS desde la aplicación HTML/Javascript de phonegap usando Phone SMS API?
- 30. Android Eliminar SeekBar Antecedentes
Mira lo que uno http://stackoverflow.com/questions/5671564/how-to-send-sms-message-on-android-device-in-the-background – sealz