2010-09-15 8 views

Répondre

40

Besoin d'exécuter une requête simple à SMS ContentProvider. Voici un exemple de travail:

final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 

Cursor c = getContentResolver().query(SMS_INBOX, null, "read = 0", null, null); 
int unreadMessagesCount = c.getCount(); 
c.deactivate(); 

Vous aurez également besoin de la READ_SMS permission:

<uses-permission android:name="android.permission.READ_SMS" /> 

Gardez à l'esprit que le fournisseur de contenu SMS est ne fait pas partie du SDK, et ce code n'est pas garantie de travailler sur tous les appareils passés, présents et futurs.

+6

Note: cela nécessite l'autorisation READ_SMS! –

+6

getContentResolver() doit être appelé à partir d'un contexte existant. Pour quelqu'un dans le futur venant ici pour une réponse, la syntaxe correcte est 'Cursor c = context.getContentResolver()' – bkaiser

+0

puis-je recevoir des messages non lus que nous avons reçus dans la dernière heure? –

1

La façon la plus simple que j'ai découvert:

Cursor c = getContentResolver().query(
    Uri.parse("content://sms/inbox"), 
    new String[] { 
     "count(_id)", 
    }, 
    "read = 0", 
    null, 
    null 
); 
c.moveToFirst(); 
int unreadMessagesCount = c.getInt(0); 
+0

Puis-je recevoir des messages non lus que nous avons reçus au cours de la dernière heure? –

Questions connexes