Получить количество непрочитанных смс

17

Как я могу получить количество непрочитанных смс в android?

    
задан Tiago Costa 15.09.2010 в 16:38
источник

2 ответа

40

Необходимо выполнить простой запрос к SMS ContentProvider. Вот рабочий пример:

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

Вам также потребуется разрешение READ_SMS:

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

Имейте в виду, что поставщик контента SMS фактически не является частью SDK, и этот код не гарантированно работает на всех прошлых, настоящих и будущих устройствах.

    
ответ дан Sergey Glotov 16.09.2010 в 12:00
источник
  • Примечание: для этого требуется разрешение READ_SMS! –  Kyle Clegg 26.07.2012 в 19:11
  • getContentResolver () должен вызываться из существующего контекста. Для любого, кто в будущем придет сюда для ответа, правильным синтаксисом является Cursor c = context.getContentResolver () –  bkaiser 09.01.2013 в 17:41
  • могу ли я получить непрочитанные сообщения, которые мы получили за последний час? –  Prashanth Debbadwar 05.01.2016 в 18:33
1

Самый простой способ узнать:

Cursor c = getContentResolver().query(
    Uri.parse("content://sms/inbox"),
    new String[] {
        "count(_id)",
    },
    "read = 0",
    null,
    null
);
c.moveToFirst();
int unreadMessagesCount = c.getInt(0);
    
ответ дан alopatindev 10.08.2013 в 20:56
источник
  • могу ли я получить непрочитанные сообщения, которые мы получили за последний час? –  Prashanth Debbadwar 05.01.2016 в 18:33