2010-09-15 15 views

Antwort

40

Sie müssen eine einfache Abfrage an SMS ContentProvider ausführen. Hier ist ein funktionierendes Beispiel:

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(); 

Sie auch die READ_SMS Erlaubnis benötigen:

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

Beachten Sie, dass die SMS-Inhalte-Anbieter nicht tatsächlich einen Teil des SDK ist, und dieser Code ist nicht garantiert auf allen Geräten der Vergangenheit, Gegenwart und Zukunft zu arbeiten.

+6

Hinweis: Dies erfordert die READ_SMS Erlaubnis! –

+6

getContentResolver() muss von einem vorhandenen Kontext aufgerufen werden. Für jeden, der in Zukunft hier für eine Antwort kommt, ist die richtige Syntax 'Cursor c = context.getContentResolver()' – bkaiser

+0

kann ich ungelesene Nachrichten bekommen, die wir in der letzten Stunde erhalten haben? –

1

Der einfachste Weg, fand ich heraus:

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

kann ich ungelesene Nachrichten erhalten, die wir in der letzten Stunde erhalten haben? –

Verwandte Themen