¿Cómo puedo enviar mensajes SMS en el BACKGROUND usando Android?

Estoy viniendo del desarrollo del iphone donde no puedes enviar un SMS en el fondo sin preguntar al usuario para confirmar el envío. ¿Pueden los sms ser enviados en segundo plano en android para que ninguna intervención del usuario sea necesaria?

Enviar SMS con notificación de entrega de SMS como brindis.

Como se indica a continuación.

sendSMS("98********","This is test message"); 

Como se indica a continuación.

 /* * 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 abajo.

 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 los permisos abren tu AndroidManifest.xml y agregan debajo de la línea

 <uses-permission android:name="android.permission.SEND_SMS"/> 

Y está hecho …….

Sí, tú también eres capaz.

 SmsManager sm = SmsManager.getDefault(); sm.sendTextMessage(number, null, message, null, null); 
  • Android - cómo hacer que mi app sms aplicación por defecto programatically
  • SMS de confirmación no deseados enviados por el proveedor en Austria
  • SMS no recibidos ... sólo en ciertos casos ... Carrier / Country?
  • Cómo abortar BroadcastReceiver en android
  • ¿Cómo usar dos emuladores al mismo tiempo en el mismo proyecto en Android Studio?
  • SMSManager no funciona en Samsung Galaxy S3 LTE
  • Informe de entrega de Android SmsManger
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.