2010-01-01 5 views
8

Dans mon application, j'ai besoin d'interroger à la fois le SMS et le journal MMS pour obtenir l'historique de tous les messages entrants et sortants. Ce code a fonctionné à merveille pour les SMS:Comment faire pour interroger le MMS Connexion Android

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

Mais quand j'essayez ce qui suit je reçois des résultats complètement différents:

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

La requête SMS renvoie les données qui inclut l'adresse de message (numéro de téléphone), le contact nom, objet du message, corps du message, etc ... La même requête pour MMS renvoie un tas de zéros ou de champs de valeurs numériques que je ne peux pas comprendre. J'ai vraiment besoin d'une liste de tous les messages MMS actuellement sur le téléphone avec le numéro de téléphone ou l'ID de contact associé, et si le message était un message entrant ou sortant. Dans les résultats de requête SMS, je peux obtenir le numéro de téléphone à partir du champ address et le type entrant/sortant du champ type mais aucun de ceux-ci n'existe lorsque je demande des MMS.

Existe-t-il un contenu Uri différent que j'ai besoin d'interroger pour ce type de données MMS? Toute aide serait grandement appréciée. Edit: Juste pour clarifier, je suis tout à fait conscient qu'il s'agit d'un fournisseur de contenu non pris en charge. Cependant, comme il n'y a pas de moyen de faire cela, je suis tout à fait prêt à tester et supporter cette version par téléphone/par OS. Juste pour garder la discussion sur la bonne voie permet de dire que cette question est spécifique à Android 1.6 sur un HTC Dream (G1) ou HTC Magic (MyTouch). Comment accompliriez-vous cette tâche sur cette version spécifique du téléphone et du système d'exploitation? Ou si ce n'est pas possible sur ceux-ci, mais il est possible sur Android 2.0 sur un Motorola Droid, alors je trouverais cette information très utile aussi bien. Mais quoi qu'il en soit, tenons à la discussion sur la façon d'accomplir cette tâche de manière soutenue ou non et ne la laissez pas tomber dans une discussion sur la façon dont nous devrions tous rester à l'écart des choses qui ne sont pas supportées par l'API. trouver les groupes de discussion Android pour être criblé et que je ressens fournit peu ou pas d'aide que ce soit. Si j'utilise une méthode non supportée, c'est bien, montrez-moi la méthode supportée pour accomplir cette tâche. S'il n'y a pas de méthode supportée, alors pourquoi le support de l'API me permet-il de demander l'autorisation de lire des SMS via android.permission.READ_SMS?

+2

Veuillez noter que ni l'un ni l'autre ne sont pris en charge et que votre application peut se briser sur différents appareils ou sur les futures versions d'Android. Le fournisseur de contenu SMS ne fait pas partie du SDK Android, les fabricants de périphériques sont donc invités à le supprimer, à le réviser ou à le nettoyer, et l'équipe Android de base peut faire de même. – CommonsWare

+0

Je comprends parfaitement cela. Si vous avez une manière officiellement acceptée d'interroger le journal SMS, je serais heureux d'y accéder. En attendant, j'essaie simplement de travailler avec ce qui m'est accessible. –

+0

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

Répondre

5

Ce sont les uris de contenu que j'ai utilisées dans le passé. Vous devrez jouer avec les valeurs que vous récupérez, et il est loin d'obtenir les parties d'un MMS, mais j'espère que cela vous aidera.

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

Attendez, qu'avez-vous dit était la différence entre 'SENT_MMS_CONTENT_URI' et' MMS_PART_URI'? –

Questions connexes