Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用ContactsContract,查询匹配的姓名或电子邮件_Android_Android Contentprovider_Contactscontract - Fatal编程技术网

Android 使用ContactsContract,查询匹配的姓名或电子邮件

Android 使用ContactsContract,查询匹配的姓名或电子邮件,android,android-contentprovider,contactscontract,Android,Android Contentprovider,Contactscontract,是否可以对contacts Contract执行一次查询,以获得一组与显示名称、电话号码或电子邮件地址匹配的联系人 这本质上是联系人和数据“表”的连接(在引号中,因为它们在接口中看起来像表,但可能不是) 换句话说,我想要一个where子句(稍微简化语法) 这些表是像这样连接的 Data.RAW_CONTACT_ID = RawContacts.ID and RawContacts.CONTACT_ID = Contacts.ID 我可以在没有连接的情况下作为单独的查询来完成这项工作,但是排序结

是否可以对contacts Contract执行一次查询,以获得一组与显示名称、电话号码或电子邮件地址匹配的联系人

这本质上是联系人和数据“表”的连接(在引号中,因为它们在接口中看起来像表,但可能不是)

换句话说,我想要一个where子句(稍微简化语法)

这些表是像这样连接的

Data.RAW_CONTACT_ID = RawContacts.ID and RawContacts.CONTACT_ID = Contacts.ID

我可以在没有连接的情况下作为单独的查询来完成这项工作,但是排序结果变得很困难。我想按显示名称来订购。

答案让我很难堪。 数据表已经是一个连接(或者看起来像一个连接,可能在内部是一个非规范化的表)。因此,我需要做的就是直接查询所有三个匹配项:

where Data.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.DISPLAY_NAME。

如果您只想匹配NAME/email/phone,则可以执行以下操作:

WHERE Data.MIMETYPE IN (StructuredName.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE, Email.CONTENT_ITEM_TYPE) 
AND Data.DATA1 LIKE "%?%"
如果您同意扩展可能的匹配字段,则可以将查询简化为:

WHERE Data.DATA1 LIKE "%?%"
这将匹配
CommonDataTypes.StructuredName.DISPLAY\u NAME
CommonDataTypes.Email.ADDRESS
CommonDataTypes.Phone.NUMBER
,等等

WHERE Data.DATA1 LIKE "%?%"