El envío de SMS mediante Intent no incluye destinatarios en algunos dispositivos

Envío SMS usando el código abajo:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + phoneNumber)); intent.putExtra("address", phoneNumber); intent.putExtra("sms_body", messageBody); intent.setType("vnd.android-dir/mms-sms"); context.startActivity(intent); 

Añadí ambos Uri con smsto: y la dirección String extra a Intent. Funciona en la mayoría de los dispositivos, pero en algunos – no lo hace. Uno de los dispositivos es SE XPERIA Mini. ¿Qué más se puede agregar al enviar SMS para asegurarse de que el destinatario está configurado en la aplicación de SMS?

Busqué en la fuente de intención y parece que el tipo de intención de ajuste elimina datos y elimina el tipo de datos de configuración. Esto es lo que he encontrado:

 public Intent setData(Uri data) { mData = data; mType = null; return this; } public Intent setType(String type) { mData = null; mType = type; return this; } public Intent setDataAndType(Uri data, String type) { mData = data; mType = type; return this; } 

Así que el tipo de ajuste reemplaza mis datos proporcionados en Uri.parse ("smsto:" + phoneNumber). También intenté usar setDataAndType, pero entonces android apenas no puede encontrar la intención correcta de comenzar para tal combinación … Ésta es tan la solución final:

 Intent intent = new Intent(Intent.ACTION_VIEW); intent.putExtra("address", phoneNumber); intent.putExtra("sms_body", messageBody); intent.setData(Uri.parse("smsto:" + phoneNumber)); context.startActivity(intent); 

Parece que funciona en diferentes dispositivos en lo que puedo probar. Espero que esto sea útil para cualquier persona que enfrenta el mismo problema.

¡Aclamaciones!

  • KitKat para Android (API 19) - ¿Cómo escribir mensajes en SMS Content Provider, sin enviarlos, desde la aplicación no predeterminada?
  • Android: cómo obtener el número de teléfono de un SMS entrante?
  • Cómo obtener SMS de borrador en Android 6 Marshmallow
  • ¿Cómo enviar sms al apagar el teléfono en android?
  • Enviar SMS a través de la intención de múltiples números de teléfono
  • Enviar y leer el contenido de SMS enviado a través de la aplicación nativa de SMS cordova
  • Abortar SMS Intent en Android KitKat
  • El observador SMS enviado se ejecuta 3 veces
  • Obtener id de id de mensaje o _id de onReceive android
  • Puedo enviar "SMS recibido intención"?
  • Detectar qué tarjeta SIM ha recibido el mensaje
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.