【发布时间】:2016-02-16 16:39:33
【问题描述】:
我正在按照这个例子retrieve list of contacts 从安卓设备中检索联系人。 它提供了所有联系人,包括电子邮件联系人和一些空联系人。
我尝试在投影和选择中修改 ContactsContract 之类的 ContactsContract.Contacts.HAS_PHONE_NUMBER 以获取移动联系人,但没有任何结果。
String[] PROJECTION = {ContactsContract.Contacts._ID,ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts._ID,
SORT_ORDER,ContactsContract.Contacts.HAS_PHONE_NUMBER};
字符串选择 = ContactsContract.Contacts.DISPLAY_NAME + "''" + " AND "ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1";
知道只获取有手机号码的联系人吗?
【问题讨论】:
-
使用
ContactsContract.CommonDataKinds.Phone.CONTENT_URI -
@pskink 我尝试在选择中传递 Phone.CONTENT_URI 但给出了无法识别的令牌异常。
-
为什么投影中有 SORT_ORDER 和 HAS_PHONE_NUMBER ? HAS_PHONE_NUMBER 应该在选择中 - 因为您似乎想根据它进行选择。使用 selection = "HAS_PHONE_NUMBER = 1" 并在正确的查询参数中传递适当的排序顺序。
-
将 ContactsContract.Contacts.CONTENT_URI 更改为 ContactsContract.CommonDataKinds.Phone.CONTENT_URI 并在选择而不是投影中添加 HAS_PHONE_NUMBER = 1 解决了这个问题,@RocketRandom 感谢您的提示。
-
但我确实多次收到相同的联系人,有什么建议可以避免这种情况
标签: android android-contentprovider android-contacts android-cursor contactscontract