Я создал appWidget, который обновляет счетчик непрочитанных смс для определенного контакта, когда приходит новое смс, для этого я зарегистрировал contentObserver для отслеживания входящих смс.
Класс mySMSObserver вызывает метод нижедля получения количества непрочитанных сообщений для конкретного контакта, по его идентификатору .
Пока все хорошо, проблема в том, что приведенный ниже запрос работает нормально на эмуляторе, но когдаЯ пытаюсь, чтобы на моем устройстве Android всегда возвращалось 0 непрочитанных сообщений (как показано в Toast).
private static String updateUnreadSMS (String contactID, Context context) {
ContentResolver cr=context.getContentResolver();
//final Uri SMS_INBOX=(Uri.parse("content://mms-sms/conversations"));
//final Uri SMS_INBOX=(Uri.parse("content://mms/inbox"));
final Uri SMS_INBOX=Uri.parse("content://sms/inbox");
Cursor c = cr.query(SMS_INBOX, null, "read = 0 AND person=?", new String[]{contactID}, null);
// get number of unread sms messages
int unreadMessagesCount = c.getCount();
Log.d("DEBUG", "UnreadSMS: "+unreadMessagesCount);
Toast.makeText(context, "updateUnreadSMS "+unreadMessagesCount, Toast.LENGTH_LONG).show();
c.deactivate();
return String.valueOf(unreadMessagesCount);
}
Нужны ли разные запросы для разных устройств?
как мне написать один и тот же запрос для "content: // mms / inbox" ?,Потому что "человек =?"является недопустимым полем для этого запроса.
Буду рад вашей помощи и советам для решения этой проблемы:)