Whatsapp 联系人复制我的联系人列表
Posted
技术标签:
【中文标题】Whatsapp 联系人复制我的联系人列表【英文标题】:Whatsapp contacts duplicating my contact list 【发布时间】:2015-12-21 10:29:13 【问题描述】:我创建了一个小活动,用于显示手机中所有带有电话号码的联系人。但是,安装了 whatsapp 的联系人有重复项。例如,如果 John 在我的联系人列表中并且他也有一个 whatsapp 帐户,那么该列表将如下所示:
...
杰克
约翰
约翰
日本
...
这是我将光标分配给链接到列表视图的适配器的代码。
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC";
final Cursor cursor = getContentResolver().query(uri, null, null, null, sortOrder);
String[] from = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone._ID;
int[] to = android.R.id.text1;
adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, cursor, from, to, 0);
编辑 使用此代码,我确认 ContactsContract.CommonDataKinds.Phone.TYPE 的重复项具有 0 值,这意味着它是自定义联系人 (Whatsapp)。其余为 2,表示正常接触。
我需要找出一个不使用任何联系人的查询,其中 ContactsContract.CommonDataKinds.Phone.TYPE == 0
【问题讨论】:
【参考方案1】:我知道可能有点晚了。但是我遇到了同样的问题。
根据 android documentation ,ContactsContract.CommonDataKinds.Phone.TYPE 不是指它是否是自定义联系人,而是指它是什么类型的联系人,即 Mobile(2)、Home(1) 或 Work(3)。 Whatsapp 联系人将是 2 - 移动设备。
我使用以下函数来删除重复项(不确定是否有更好的方法):
private boolean checkDuplicate(String position)
LinkedHashMap<String, Integer> map;
Integer testNull;
map=new LinkedHashMap<>();
testNull=map.get(position);
if(testNull==null)
testNull=1;
map.put(position, testNull);
return false;
else
testNull=testNull+1;
if(testNull==2)
return true;
else
map.put(position, testNull);
return false;
【讨论】:
以上是关于Whatsapp 联系人复制我的联系人列表的主要内容,如果未能解决你的问题,请参考以下文章
单击whatsapp web(javascript)中联系人列表中的联系人之一
android检查联系人是不是安装了应用程序android(如whatsapp)