2010-01-01 12 views
8

Nella mia app ho bisogno di interrogare sia il log SMS sia il registro MMS per ottenere la cronologia di tutti i messaggi in entrata e in uscita. Questo codice ha funzionato meravigliosamente per SMS:Come interrogare il registro MMS in Android

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

Ma quando provo il seguente ottengo risultati completamente diversi:

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

La query SMS restituisce dati che include l'indirizzo del messaggio (numero di telefono), il contatto nome, oggetto del messaggio, corpo del messaggio, ecc. La stessa query per MMS restituisce un gruppo di campi null o valori numerici che non riesco a capire. Ho davvero bisogno di un elenco di tutti i messaggi MMS attualmente sul telefono con il numero di telefono o l'ID di contatto associato e se il messaggio era un messaggio in entrata o in uscita. Nei risultati della query SMS è possibile ottenere il numero di telefono dal campo address e il tipo di entrata/uscita dal campo type ma nessuno di questi esiste quando eseguo query per MMS.

Esiste un altro contenuto Uri di cui ho bisogno per eseguire questo tipo di dati MMS? Qualsiasi aiuto sarebbe molto apprezzato.

Modifica: Giusto per chiarire, sono completamente consapevole del fatto che si tratta di un fornitore di contenuti non supportato. Tuttavia, poiché non esiste un modo supportato per farlo, sono assolutamente disposto a testarlo e supportarlo in base al numero di telefono/per versione del sistema operativo. Solo per mantenere la discussione in pista, diciamo che questa domanda è specifica per Android 1.6 su un HTC Dream (G1) o HTC Magic (MyTouch). Come realizzeresti questo compito su quella specifica versione di telefono e sistema operativo? O se non è possibile su quelli, ma è possibile su Android 2.0 su un Motorola Droid, quindi troverei le informazioni molto utili. Ma a prescindere, continuiamo a discutere su come portare a termine questa attività in modo supportato o non supportato e non lasciare che diventi una discussione su come dovremmo tutti stare lontani da cose che non sono supportate dall'API, che è qualcosa che io trova i gruppi di discussione di Android con cui crearli e che io ritengo non aiuti quasi nulla. Se sto usando un metodo non supportato, va bene, mostrami il metodo supportato per realizzare quell'attività. Se non esiste un metodo supportato, allora perché il supporto API mi consente di richiedere il permesso di leggere SMS tramite android.permission.READ_SMS?

+2

Si prega di tenere presente che nessuno di questi è supportato, e la vostra applicazione potrebbe rompersi su vari dispositivi o con versioni future di Android. Il provider di contenuti SMS non fa parte dell'SDK di Android, quindi i produttori di dispositivi sono invitati a rimuoverlo, a rivederlo o altrimenti a rimuoverlo e il team principale di Android è invitato a fare lo stesso. – CommonsWare

+0

Lo capisco perfettamente. Se hai qualche modo supportato ufficialmente di interrogare il log degli SMS, sarei felice di passare ad esso. Nel frattempo sto solo cercando di lavorare con ciò che è disponibile per me. –

+0

Vedi anche: http://stackoverflow.com/questions/2591530/contentobserver-on-content-sms-in-1-6 –

risposta

5

Questi sono gli uris dei contenuti che ho usato in passato. Dovrai giocherellare con i valori che ottieni, ed è molto lontano dall'ottenere le parti di un MMS, ma spero che possa aiutarti.

// 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

Aspetta, cosa hai detto era la differenza tra 'SENT_MMS_CONTENT_URI' e' MMS_PART_URI'? –

Problemi correlati