[英]Android Contact Phone Numbers fetching Duplication
我可以获取每个联系人的联系人和电话号码,但是电话号码是重复的,我认为有些选项可以显示与其他应用程序(如Viber等)链接的联系人,因此联系人可以检索重复的联系人
如何避免选择每个联系人的重复号码?
尝试这个
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 3);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 3) {
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
contactNumber = "";
Cursor cursor = getContentResolver().query(contactData, null, null, null, null);
cursor.moveToFirst();
String hasPhone = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String contactId = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
if (hasPhone.equals("1")) {
Cursor phones = getContentResolver().query
(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
while (phones.moveToNext()) {
contactNumber = phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.NUMBER)).replaceAll("[-() ]", "");
contactName=phones.getString(phones.getColumnIndex
(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
}
phones.close();
并告诉我这是否解决了您的问题。 :)
我通过使用哈希图解决了这个问题。 您已将设备ID的哈希图映射到电话号码。 您将每个数字添加到哈希图中,然后检查哈希图是否不包含该设备ID。
通过查询以下URI获取设备ID。
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_URI, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME};
Hashmap<String , Contact > = new Hashmap<String , Contact>();
if (contactHashMap.containsKey(id)) {
// skip that contact.
}
else {
//fill your contact object.
// get device id of contact from mobile
contactHashMap.put(id, contact);
}
这样,您可以避免重复。 还有另一种查询其他表的方法,该表为设备ID提供了编号。 但这花费了您两个查询。 上面的hashmap方法是有效的,对我来说效果很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.