Android 获取具有唯一结果的电子邮件或电话号码的联系人

Android 获取具有唯一结果的电子邮件或电话号码的联系人,android,email,distinct,android-contacts,phone-number,Android,Email,Distinct,Android Contacts,Phone Number,我正在尝试列出有电子邮件、电话或两者都有的联系人。 为此,我正在使用ContentResolver,URI设置为contacts contract.Data.CONTENT\u URI,并根据以下条件进行选择: String SELECTION = ContactsContract.Data.DISPLAY_NAME_PRIMARY + "<>'' AND " + ContactsContract.Data.IN_VISIBLE_GROUP + "=1" + " AND (" + C

我正在尝试列出有电子邮件、电话或两者都有的联系人。 为此,我正在使用
ContentResolver
,URI设置为
contacts contract.Data.CONTENT\u URI
,并根据以下条件进行选择:

String SELECTION = ContactsContract.Data.DISPLAY_NAME_PRIMARY + "<>'' AND " + ContactsContract.Data.IN_VISIBLE_GROUP + "=1" + " AND (" + ContactsContract.Data.MIMETYPE + "=? OR " + ContactsContract.Data.MIMETYPE + "=?)";
String[] SELECTION_ARGS = new String[]{ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE,
                ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE};
String SELECTION=contacts contract.Data.DISPLAY_NAME_PRIMARY+““”和“+contacts contract.Data.IN_VISIBLE_GROUP+”=1“+”和(“+contacts contract.Data.MIMETYPE+”=?或“+contacts contract.Data.MIMETYPE+”=?);
String[]SELECTION\u ARGS=新字符串[]{contacts contract.commondatatypes.Email.CONTENT\u ITEM\u TYPE,
ContactsContract.CommonDataTypes.Phone.CONTENT\u ITEM\u TYPE};
我只对此类联系人的姓名感兴趣。但由于数据表在单独的行中保存给定联系人的每个信息,所以结果游标中有重复的条目

有没有办法区分这些条目?我正在将
cursorloadermanger
CursorAdapter
一起使用(可能唯一的方法是在加载程序完成时过滤掉它们?。

使用以下代码

ContentResolver cr = context.getContentResolver();
    String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID, 
            ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Email.DATA, 
            ContactsContract.CommonDataKinds.Photo.CONTACT_ID };
    String order = "CASE WHEN " 
            + ContactsContract.CommonDataKinds.Phone.NUMBER
            + " NOT LIKE '%@%' THEN 1 ELSE 2 END, " 
            + ContactsContract.Contacts.NUMBER
            + ", " 
            + ContactsContract.CommonDataKinds.Email.DATA
            + " COLLATE NOCASE";
    String filter = ContactsContract.CommonDataKinds.Email.DATA + " NOT LIKE ''";
    Cursor cur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, filter, null, order);

你看到了吗,它有点旧了,但可能会有帮助。我已经尝试过了,但不幸的是没有任何帮助,因为这些“黑客”在最新的android版本中已经修复,或者它们不适用于联系人内容提供商:/Contacts contract.Contacts.NUMBER不存在。您是指ContactsContract.CommonDataTypes.Phone.NUMBER吗?但这仍然不会从选择结果中排除重复条目。