我正在开发一个应仅向用户显示重复电话联系人,以便他们可以删除重复联系人的应用程序。 Duplicates
到目前为止,我无法使用以下代码显示所有联系人:
主要活动:
private void showContacts() {
Cursor cursor = ContactHelper.getcontactCursor(getcontentResolver(),"");
String[] fields = new String[]{ContactsContract.Data.DISPLAY_NAME};
adapter =new SimpleCursorAdapter(this,android.R.layout.simple_list_item_multiple_choice,cursor,fields,new int[]{android.R.id.text1});
listView.setadapter(adapter);
adapter.notifyDataSetChanged(); }
ContactHelper.getcontactsCursor函数:
public static Cursor getcontactCursor(ContentResolver contactHelper,String startsWith) {
String[] projection = { ContactsContract.CommonDataKinds.Phone._ID,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMber };
Cursor cur = null;
try {
if (startsWith != null && !startsWith.equals("")) {
cur = contactHelper.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
+ " like \"" + startsWith + "%\"",null,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
+ " ASC");
} else {
cur = contactHelper.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
+ " ASC");
}
cur.moveToFirst();
} catch (Exception e) {
e.printStackTrace();
}
return cur;
}
private static long getcontactID(ContentResolver contactHelper,String number) {
Uri contacturi = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));
String[] projection = { ContactsContract.PhoneLookup._ID };
Cursor cursor = null;
try {
cursor = contactHelper.query(contacturi,null);
if (cursor.moveToFirst()) {
int personID = cursor.getcolumnIndex(ContactsContract.PhoneLookup._ID);
return cursor.getLong(personID);
}
return -1;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
cursor = null;
}
}
return -1; }
如何从游标中过滤唯一值?并尽可能只根据电话号码保留重复的联系人?