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!

  • Obtener múltiples transmisiones de intenciones?
  • Enviar SMS a través de PhoneGap en Android
  • Obtener número de teléfono para varios destinatarios en android
  • Android Broadcast Receiver para enviar mensajes SMS?
  • Cómo borrar db cuando la aplicación se desinstala en android
  • Volver automáticamente a la anterior aplicación de SMS predeterminada
  • ¿Cómo comunicar la aplicación con el servidor sin conexión a Internet?
  • Interceptar mensajes entrantes de flash en Android Mobile
  • Los datos de Android enviados entre dos emuladores se truncan en tránsito
  • Cómo cambiar el texto de los sms de Android
  • Extras de Android PendingIntent, no recibidos por BroadcastReceiver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.