Вопрос по android – Как получить количество SMS-сообщений на контакт в текстовом просмотре?

2

у меня естьlistview который отображает контакты на моем устройстве. То, что я пытаюсь сделать, это отобразить количество текстовых сообщений, полученных моим устройством от каждого контакта, в виде просмотра текста в моем просмотре списка. Я только смог отобразитьtotal количество текстовых сообщений в моем почтовом ящике из этого кода:

        // gets total count of messages in inbox
        String folder = "content://sms/inbox";
        Uri mSmsQueryUri = Uri.parse(folder);
        String columns[] = new String[] {"person", "address", "body", "date","status"}; 
        String sortOrder = "date ASC"; 
        Cursor c = context.getContentResolver().query(mSmsQueryUri, columns, null, null, sortOrder);

        textview.setText(c.getCount());

Проблема с приведенным выше кодом состоит в том, что для каждой строки в моем списке просмотра это только показывает общее количество. Как я могу разделить общее количество между соответствующими контактами?

Конечный результат такой, если бы я100 messages in my inbox: Contacts:

Фу Маньчжу: 25

Бар Би: 15

Сна Фуу: 10

Джон Доу: 50

Ваш Ответ

2   ответа
1

count(person) AS cnt кcolumns Массив строк, а затем я бы добавилperson какgroupBy аргументquery метод.

EDIT:

И как указаноJens,GROUP BY парадигма не поддерживается службой обмена сообщениями ContentProvider.

Что вы можете сделать, это создать собственную базу данных в памяти при запуске приложения (http://www.sqlite.org/inmemorydb.html) и скопировать (вставить-вставить) интересующие сообщения из базы данных системы обмена сообщениями. в вашу базу данных в памяти. (NOTE! Это может произойти неправильно, если у вас мало памяти и у вас огромное количество сообщений, которые вас интересуют). Поскольку вы являетесь Богом в базе данных в памяти, вы можете запрашивать ее, как считаете нужным, с любыми экзотическими SQL-запросами, которые вам нравятся ...

@Jens: Ах! Вы так правы! Изменение моего ответа соответственно ...
Он звонит провайдеру контента для обмена сообщениями, groupBy: s и другим приятным / причудливым вещам, которые действительно не поддерживаются (хотя вы все равно можете получить много странного дерьма в аргументах выбора и выбора).
3

Uri SMS_INBOX = Uri.parse("content://sms/conversations/");

Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null);

    startManagingCursor(c);
    String[] count = new String[c.getCount()];
    String[] snippet = new String[c.getCount()];
    String[] thread_id = new String[c.getCount()];

    c.moveToFirst();
    for (int i = 0; i < c.getCount(); i++) {
        count[i] = c.getString(c.getColumnIndexOrThrow("msg_count"))
                .toString();
        thread_id[i] = c.getString(c.getColumnIndexOrThrow("thread_id"))
                .toString();
        snippet[i] = c.getString(c.getColumnIndexOrThrow("snippet"))
                .toString();
        Log.v("count", count[i]);
        Log.v("thread", thread_id[i]);
        Log.v("snippet", snippet[i]);
        c.moveToNext();
    }

Как отобразить количество текстовых сообщений, полученных от контакта?

Создайте собственный адаптер с вашей собственной моделью. Вы не можете напрямую перейти к обычному адаптеру простого курсора. Вот оригинальная модель Android, на которую вы можете сослатьсяConversation и макет для элемента строки [ConversationListItem] (github.com/android/platform_packages_apps_mms/blob/master/src/…)
это все еще не показывает мне, как использовать это для моего текстового представления в моем просмотре списка SpicyWeenie
ваше решение неполное. Что возвращается? SpicyWeenie
count - номер сообщения каждого отправителя. Thread-id - это порядок в обычном почтовом ящике. Фрагмент - последнее сообщение в разговоре.

Похожие вопросы