我在检索所有手机通讯录时遇到问题。
使用以下选择条款时,我未获得未与群组相关联的联系人(例如Google特定帐户组):
final static String SELECTION = (Utils.hasHoneycomb()
? Contacts.DISPLAY_NAME_PRIMARY
: Contacts.DISPLAY_NAME) + "<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1";
...
...
// onCreateLoader() code:
return new CursorLoader(getActivity(), Contacts.CONTENT_URI, ContactsQuery.PROJECTION,
ContactsQuery.SELECTION, null, ContactsQuery.SORT_ORDER);
从其中一个Google教程或演示项目获得此片段。
根据文档,我意识到Contacts.IN_VISIBLE_GROUP + "=1"
导致过滤不属于任何群组的联系人,所以我只是删除了这个条件,期望获得不属于任何群组的联系人:
final static String SELECTION = (Utils.hasHoneycomb()
? Contacts.DISPLAY_NAME_PRIMARY
: Contacts.DISPLAY_NAME) + "<>''";
使用此SELECTION子句后 - 我得到的所有联系人包括不属于任何组的联系人,但现在我得到了属于某个组的所有联系人的重复。
请帮助我了解如何执行返回所有联系人而无需重复的查询
提前致谢
答案 0 :(得分:0)
Uri contactUri = data.getData();
String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.Contacts.DISPLAY_NAME};
Cursor cursor = activity.getContentResolver()
.query(contactUri, projection, null, null, null);
cursor.moveToFirst();
int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String number = cursor.getString(column);
int column1 = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
String name = cursor.getString(column1);