2010-01-01 11 views
8

En mi aplicación necesito consultar tanto el registro de SMS como el de MMS para obtener el historial de todos los mensajes entrantes y salientes. Este código ha funcionado de maravilla para SMS:Cómo consultar el registro de MMS en Android

Cursor c = cr.query(Uri.parse("content://sms"), null, null, null, null); 

Pero cuando intento el siguiente consigo resultados completamente diferentes:

Cursor c = cr.query(Uri.parse("content://mms"), null, null, null, null); 

La consulta de SMS devuelve datos que incluye la dirección del mensaje (número de teléfono), contactos nombre, asunto del mensaje, cuerpo del mensaje, etc ... La misma consulta para MMS devuelve un conjunto de nulos o campos de valores numéricos que no puedo entender. Realmente necesito una lista de todos los mensajes MMS actualmente en el teléfono con el número de teléfono o ID de contacto asociado, y si el mensaje era un mensaje entrante o saliente. En los resultados de la consulta de SMS, puedo obtener el número de teléfono del campo address y el tipo entrante/saliente del campo type, pero ninguno de estos dos campos existen cuando consulto MMS.

¿Hay algún contenido URI diferente que necesite consultar para este tipo de datos MMS? Cualquier ayuda sería muy apreciada.

Editar: Solo para aclarar, estoy completamente consciente de que este es un proveedor de contenido no compatible. Sin embargo, dado que no existe una forma compatible de hacerlo, estoy totalmente dispuesto a probar y respaldar esto por versión de teléfono/por sistema operativo. Solo para mantener la discusión en el camino, digamos que esta pregunta es específica de Android 1.6 en un HTC Dream (G1) o HTC Magic (MyTouch). ¿Cómo lograría esta tarea en esa versión específica de teléfono y sistema operativo? O si no es posible en esos casos, pero es posible en Android 2.0 en un Motorola Droid, entonces encontraría esa información muy útil también. Pero a pesar de todo, sigamos con la discusión sobre cómo llevar a cabo esta tarea de una manera compatible o no, y no dejamos que se convierta en una discusión sobre cómo debemos mantenernos alejados de las cosas que no son compatibles con la API, que es algo que encuentre los grupos de discusión de Android con los que debe lidiar y que, en mi opinión, brindan poca o ninguna ayuda. Si estoy usando un método no compatible, está bien, muéstrame el método compatible para realizar esa tarea. Si no hay un método compatible, ¿por qué la API admite que pueda solicitar permiso para leer SMS a través de android.permission.READ_SMS?

+2

Tenga en cuenta que ninguno de los dos es compatible, y su aplicación puede fallar en varios dispositivos o en futuras versiones de Android. El proveedor de contenido de SMS no es parte del SDK de Android, por lo que los fabricantes de dispositivos pueden eliminarlo, revisarlo o desactivarlo, y el equipo principal de Android puede hacer lo mismo. – CommonsWare

+0

Entiendo totalmente eso. Si tiene alguna forma de consulta oficialmente compatible con el registro de SMS, me encantaría cambiar a él. Mientras tanto, estoy tratando de trabajar con lo que tengo disponible. –

+0

Ver también: http://stackoverflow.com/questions/2591530/contentobserver-on-content-sms-in-1-6 –

Respuesta

5

Estos son los uris de contenido que he usado en el pasado. Tendrás que jugar con los valores que recibes, y está muy lejos de obtener las partes de un MMS, pero con suerte te ayudará.

// root URI for MMS messages 
static final String MMS_CONTENT_URI = "content://mms"; 

// root URI for MMS and SMS threads 
public static final String MMS_SMS_CONTENT_URI = "content://mms-sms"; 

// URI of MMS inbox 
public static final String RECEIVED_MMS_CONTENT_URI = MMS_CONTENT_URI + "/inbox"; 

// URI where sent MMSes are stored 
public static final String SENT_MMS_CONTENT_URI = MMS_CONTENT_URI + "/sent"; 

// URI where sent MMSes are stored 
public static final String MMS_PART_URI = MMS_CONTENT_URI + "/part"; 

// URI for incoming SMSes (also triggers on MMSes) 
public static final String SMS_INBOX_URI = "content://sms/inbox"; 
+0

Espera, ¿cuál dijiste que era la diferencia entre 'SENT_MMS_CONTENT_URI' y' MMS_PART_URI'? –

Cuestiones relacionadas