Как можно прочитать текстовые сообщения для определенного контакта? - PullRequest
0 голосов
/ 05 апреля 2019

Я пишу приложение, которое может читать любое количество текстовых сообщений между мной и конкретным контактом. Мне удалось получить Lookup_key из ContactsContract.Contacts.CONTENT_URI, но неясно, как получить текстовые сообщения аналогичным образом.

Я пытался использовать ContactsContract.CommonDataKinds.Phone, чтобы сопоставить Lookup_key с номером телефона, а затем использовать номер телефона, чтобы выбрать текстовые сообщения. Однако номер телефона для любого контакта всегда возвращает «5». Вот мой запрос ниже.

Вот как выглядит телефонный запрос:

@SuppressLint("InlinedApi")
    private static final String[] PHONE_PROJECTION = {
            ContactsContract.CommonDataKinds.Phone._ID,
            ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY,
            ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER
    };

    @SuppressLint("InlinedApi")
    private static final String PHONE_SELECTION = ContactsContract.Data.LOOKUP_KEY + " = ?";

И я выполняю запрос через загрузчик курсора:

return new CursorLoader(
                        getApplicationContext(),
                        ContactsContract.Data.CONTENT_URI,
                        PHONE_PROJECTION,
                        PHONE_SELECTION,
                        phoneSelectionArgs,
                        null
                );

Наконец, я вытащил номер:

phoneNumber = cursor.getString(cursor
                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

Но это всегда 5. Он никогда не возвращает фактический номер телефона. Это правильный способ запросить номер телефона? Есть ли лучший способ читать сообщения от определенного контакта?

...