Android只从联系人列表中选择一个手机号码

时间:2015-09-14 09:42:21

标签: java android contacts

我正在开发一个Android应用程序,其中我从联系人列表中接收联系人并在列表视图中显示,当我显示移动号码时,如果用户在联系人中保存了两个手机号码,那么在列表视图中他的名字被重复,第二个移动号码显示在他的名字下面,所以如果为特定号码保存了两个手机号码,我只需要选择第一个号码,所以我需要在下面的代码中进行哪些更改,如果有人知道请帮忙。

 Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

        ArrayList<Contact> contacts = new ArrayList<Contact>();



           while (c.moveToNext())
        {
                int type = c.getInt(c.getColumnIndex(Phone.TYPE));

                if (type == Phone.TYPE_MOBILE)
                {
                    Contact con = new Contact(c.getString(c
                            .getColumnIndex(Contacts.DISPLAY_NAME)), c.getString(c
                            .getColumnIndex(Phone.NUMBER)));
                    contacts.add(con);
                }


            }

1 个答案:

答案 0 :(得分:0)

 public void readContacts() {
Cursor contactsCursor =getActivity().getContentResolver().query(ContactsContract
                .Contacts.CONTENT_URI, null, null, null,ContactsContract.Contacts.DISPLAY_NAME);
        mContactsMetaDataList = new ArrayList<>();
        try {
            Set<String> idSet = new HashSet<>();
            if (contactsCursor.getCount() > 0) {
                while (contactsCursor.moveToNext()) {
                    String id =contactsCursor.getString(contactsCursor.getColumnIndex
                            (ContactsContract.Contacts._ID));
                    String name =contactsCursor.getString(contactsCursor.getColumnIndex
                            (ContactsContract.Contacts.DISPLAY_NAME));
                    if(Integer.parseInt(contactsCursor.getString(contactsCursor.getColumnIndex
                            (ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                        idSet.add(name);
                        if (!idSet.contains(name)){
                            //add contact to your list here
                        }
                    }
                }
            }
        }finally {
            if (contactsCursor != null) {
                contactsCursor.close();
            }
        }
    }