Android AppWidget: SMS-запрос работает на эмуляторе, но не на реальном устройстве - PullRequest
1 голос
/ 16 октября 2011

Я создал 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" ?,Потому что "человек =?"является недопустимым полем для этого запроса.

Буду рад вашей помощи и советам для решения этой проблемы:)

1 Ответ

0 голосов
/ 16 октября 2011

Непосредственный доступ к базам данных может быть не самой лучшей идеей. Поскольку местоположения и структура данных могут меняться в разных версиях Android (это происходило с хранилищем Календаря с 7 => 8). Тем не менее проверьте, совпадает ли местоположение вашего устройства и структура базы данных.

Для MMS вы можете взглянуть на PduParser , используемый для анализа MMS-сообщений и других классов в этой папке.

...