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?
- ¿Cómo enviar y recibir SMS desde la aplicación Android?
- Escucha SMS salientes o caja enviada en Android
- La forma más rápida y rápida de obtener nuevos mensajes sms al iniciar la aplicación - Android
- Mensaje de autocompletado en Phonegap / Cordova iOS y Android
- ¿Cómo acceder al almacenamiento de SMS en Android?
- Eliminar SMS en Android 1.5
- SMS no recibidos ... sólo en ciertos casos ... Carrier / Country?
- ¿Cómo pasar el texto a Google Voice SMS mediante programación?
- Cómo actualizar el hilo de sms después de insertar un borrador en "content: // sms / draft"
- ¿Necesito anular el registro de 'anonymous' BroadcastReceiver
- Obtener número de teléfono para varios destinatarios en android
- Registrar BroadcastReceiver para SMS entrantes
- Envío y recepción de texto mediante el emulador de Android
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!
- ¿Es aconsejable desarrollar y publicar una aplicación Android sin probarla primero en un dispositivo real?
- Android Notification no está mostrando Color Icon en Marshmallow