Можно ли сделать один запрос к ContactsContract, чтобы получить набор контактов, которые соответствуют либо отображаемому имени, либо номеру телефона, либо адресу электронной почты?
По сути, это объединение "таблиц" контактов и данных (в кавычках, поскольку они только выглядят как таблицы через интерфейс, но могут и не быть).
Другими словами, я хотел бы, чтобы предложение where было чем-то вроде (немного упростив синтаксис)
where Contacts.DISPLAY_NAME like "%?%"
or (Data.MIMETYPE = Phone.CONTENT_ITEMTYPE
and CommonDataKinds.Phone.NUMBER like "%?%")
or (Data.MIMETYPE = Email.CONTENT_ITEMTYPE
and CommonDAtaKinds.Email.ADDRESS like "%?%")
и таблицы объединяются как
Data.RAW_CONTACT_ID = RawContacts.ID and RawContacts.CONTACT_ID = Contacts.ID
Я мог бы сделать это как отдельные запросы без объединения, но тогда упорядочить результаты становится сложно. Я бы хотел, чтобы они упорядочивались по отображаемому имени.