Можно ли получить доступ к элементу detailColumn элемента ContactsDataKind для ContactsAccountType? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытался найти способ не жестко кодировать «detailColum» в моем контактном запросе, где я извлекаю типы контактов mime и показываю всплывающее меню с намерениями для доступных mimes.

Например

`override fun getAccountMimes(contactId: Long): List<AccountMime> {
    val mimes = mutableListOf<AccountMime>()
    val projection = arrayOf(
            ContactsContract.Data._ID,
            ContactsContract.Data.MIMETYPE,
            ContactsContract.RawContacts.ACCOUNT_TYPE,
            ContactsContract.Data.DATA3
    )

    val selection = "${ContactsContract.Data.CONTACT_ID} = ?"
    val selectionArgs = arrayOf(contactId.toString())


    val cursor = applicationContext.contentResolver.query(ContactsContract.Data.CONTENT_URI, projection, selection, selectionArgs, null)
    cursor?.use { c ->
        if (c.moveToFirst()) {
            do {

                val title = cursor.getStringFromColumn(ContactsContract.Data.DATA3)
                val id = cursor.getLongFromColumn(ContactsContract.Data._ID)
                val accountPackage = cursor.getStringFromColumn(ContactsContract.RawContacts.ACCOUNT_TYPE)
                        ?: continue
                val mime = cursor.getStringFromColumn(ContactsContract.Data.MIMETYPE)
                        ?: continue

                val accountMime = AccountMimeProvider.provideFromBaseAccountMime(id, accountPackage, mime, title)
                if (Logger.DEBUG) {
                    Logger.log(logTag, "getContactMimes for $contactId. Adding: $accountMime")
                }
                mimes.add(accountMime)
            } while (cursor.moveToNext())
        }
    }
    return mimes
}`

Выше кода возвращает список моего класса данных AccountMime, где я просто показываю действия пользователю. Для WhatsApp он будет иметь

Номер вызова .. Номер сообщения ...

Et c

Моя проблема - "ContactsContract.Data.DATA3", это жестко закодировано , Я знаю, что использует WhatsApp. Это происходит из файла xml. См. https://cs.android.com/android/platform/superproject/+/master: пакеты / приложения / контакты / тесты / res / xml / contacts_readonly. xml? Q = ContactsDataKind например, формат

Однако, поскольку существует много имена столбцов данных , некоторые приложения используют разные столбцы данных для деталей. Итак, я ищу способ получить значение, заданное в detailColumn каждого типа MIME, чтобы мне не приходилось жестко кодировать имена столбцов.

Кто-нибудь получил какие-либо идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...