2010-09-15 13 views

Odpowiedz

40

Potrzebujesz wykonać proste zapytanie do SMS ContentProvider. Oto przykład roboczych:

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

Potrzebny będzie również pozwolenie READ_SMS:

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

pamiętać, że dostawca treści SMS nie jest w rzeczywistości częścią SDK, i ten kod nie jest gwarantowane działanie na wszystkich przeszłych, obecnych i przyszłych urządzeniach.

+6

Uwaga: wymaga to zgody READ_SMS! –

+6

Funkcja getContentResolver() musi zostać wywołana z istniejącego kontekstu. Każdy, kto w przyszłości przyjedzie tutaj, by uzyskać odpowiedź, właściwą składnią jest 'Cursor c = context.getContentResolver()' – bkaiser

+0

czy mogę uzyskać nieprzeczytane wiadomości, które otrzymaliśmy w ciągu ostatniej godziny? –

1

Najprostszym sposobem znalazłem się:

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

Czy mogę uzyskać nieprzeczytane wiadomości, które otrzymaliśmy w ciągu ostatniej godziny? –

Powiązane problemy