Я пытался найти способ не жестко кодировать «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, чтобы мне не приходилось жестко кодировать имена столбцов.
Кто-нибудь получил какие-либо идеи?