Проверка, было ли прочитано новое SMS - PullRequest
1 голос
/ 22 августа 2010

Я работаю над простым приложением для HTC EVO, которое мигает индикатором альтернативного уведомления при получении нового текстового сообщения.У меня эта часть отлично работает через Broadcast Receiver, но мне нужен какой-то способ выключить светодиод, когда пользователь прочитал сообщение (я), используя свое приложение SMS по умолчанию.Я не уверен, лучше ли это делать в приемнике или в фоновом режиме.Я нашел это , что может быть тем, что я ищу, но я понятия не имею, как его использовать, так как я не смог найти никаких инструкций или руководств.

Ответы [ 2 ]

3 голосов
/ 24 августа 2010

Хорошо, я разработал следующий код, который, я думаю, удовлетворит мои потребности.

private int getUnreadSMSCount()
{
    int count = 0;
    Uri smsURI = Uri.parse("content://sms");
    ContentResolver contentResolver = this.getContentResolver();
    Cursor cursor = contentResolver.query(smsURI, null, "read=0", null, null);
    if (cursor != null)
    {
        try
        {
            count = cursor.getCount();
        }
        finally
        {
            cursor.close();
        }
    }

    return count;

}

0 голосов
/ 23 августа 2010

К сожалению, я не верю, что есть способ сделать это.

Когда ваш BroadcastReceiver получает Intent, это копия Intent, то же самое с приложением SMS по умолчанию. Таким образом, у каждого из вас есть копии сообщения, независимого друг от друга.

Вы можете установить собственную копию сообщения для чтения, но вы не сможете увидеть его статус в приложении SMS по умолчанию. Кроме того, приложение по умолчанию не отправляет сообщение о том, что сообщение было прочитано, все эти данные хранятся локально.

Единственный способ реализовать это - написать полную замену приложения Messaging.

Извините, я надеюсь, что это поможет, дайте мне знать, если у вас есть другие вопросы.

...