我正在尝试使用电话号码选择手机上的所有联系人。但是,如果某人拥有相同的电话号码,则同一个联系人两次,它会出现两次,因为它有不同的Phone._ID。有没有办法消除查询中重复数字的选择:
Uri uri = Data.CONTENT_URI;
String[] projection = new String[] {
Data._ID,
Phone._ID,
Phone.LOOKUP_KEY,
Data.CONTACT_ID,
Data.RAW_CONTACT_ID,
Phone.NUMBER,
Data.DISPLAY_NAME,
Phone.LABEL,
Phone.TYPE,
Phone.PHOTO_ID
};
String selection = Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE+"'";
String[] selectionArgs = null;
String sortOrder = Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
或者,在选择后的过程中? 不太挑剔......
答案 0 :(得分:2)
在纯SQL中,您可以在有序选择上指定UNIQUE。我不知道内容提供商是否可以。如果没有,请使用升序电话号码和姓名的订单。将moveToNext名称与最后一个“新”名称进行比较。如果您使用的是while循环,请在匹配时继续。
String goodName = "";
String goodNumber = "";
while (cursor.moveToNext()) {
... get name and number from cursor ....
if (goodNumber == contactNumber) {
if (contactName == goodName) {
continue;
}
}
goodNumber = contactNumber;
goodName = contactName;
... do more work ....