Whatsapp联系人复制我的联系人列表

时间:2015-09-23 23:02:00

标签: java android android-fragments android-studio

我创建了一个小活动,显示手机中所有带有电话号码的联系人。但是,安装了whatsapp的联系人有重复项。例如,如果John在我的联系人列表中并且他也有一个whatsapp帐户,那么列表将如下所示:

...

杰克

约翰

约翰

JP

...

这是我的代码,用于将光标分配给链接到列表视图的适配器。

    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 ,这意味着它是自定义联系人(Whatsapp)。其余的是2,这意味着它是正常接触。

我需要找出一个查询,其中不使用任何联系人,其中ContactsContract.CommonDataKinds.Phone.TYPE == 0

1 个答案:

答案 0 :(得分:0)

我知道可能有点晚了。但是我遇到了同样的问题。

根据{{​​3}},

ContactsContract.CommonDataKinds.Phone.TYPE不是指它是自定义联系人,而是指它是什么类型的联系人,即移动(2),家庭(1)或工作(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;
        }
    }
}