在android中为联系人选择多个号码中的SUPER PRIMARY或PRIMARY number

在android中为联系人选择多个号码中的SUPER PRIMARY或PRIMARY number,android,contacts,Android,Contacts,我正在从电话簿中获取所有联系人的列表。某些联系人可能有一个以上的号码(例如,手机、家庭、工作、家庭和传真等号码类型)。当我选择所有联系人列表时,它返回与特定联系人id对应的所有号码 ContentResolver cr = getActivity().getContentResolver(); String selection; String[] select = new String[]{ContactsContract.Contact

我正在从电话簿中获取所有联系人的列表。某些联系人可能有一个以上的号码(例如,手机、家庭、工作、家庭和传真等号码类型)。当我选择所有联系人列表时,它返回与特定联系人id对应的所有号码

    ContentResolver cr = getActivity().getContentResolver();

            String selection;
            String[] select = new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER, ContactsContract.Contacts.PHOTO_THUMBNAIL_URI, ContactsContract.Contacts.STARRED};
            if (isFav) {
                selection = "starred=1";
            } else {
                selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
                        + ("1") + "'";
            }

            String sortOrder =   ContactsContract.Contacts.DISPLAY_NAME
                    + " COLLATE LOCALIZED ASC";
            Cursor cur = cr.query(
                    ContactsContract.Contacts.CONTENT_URI, select, selection
                            + " AND " + ContactsContract.Contacts.HAS_PHONE_NUMBER
                            + "=1", null, sortOrder);// this query only return contacts which had phone number and not duplicated


List<ContactItem> contactList = new ArrayList<>();

        try {
            if (cur != null && cur.getCount() > 0) {
                while (cur.moveToNext()) {
                    int id = cur.getInt(
                            cur.getColumnIndex(ContactsContract.Contacts._ID));
                    String name = cur.getString(cur.getColumnIndex(
                            ContactsContract.Contacts.DISPLAY_NAME));
                    String image = cur.getString(cur.getColumnIndex(
                            ContactsContract.Contacts.PHOTO_THUMBNAIL_URI));
                    int favState = cur.getInt(cur.getColumnIndex(
                            ContactsContract.Contacts.STARRED));

                    if (cur.getInt(cur.getColumnIndex(
                            ContactsContract.Contacts.HAS_PHONE_NUMBER)) >= 1) {
                        String[] selectOnly = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.IS_SUPER_PRIMARY, ContactsContract.CommonDataKinds.Phone.IS_PRIMARY};

                        Cursor pCur = cr.query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                selectOnly,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? ",
                                new String[]{String.valueOf(id)}, null);

                        while (pCur != null && pCur.moveToNext()) {

                            ContactItem item = new ContactItem();

                            String phoneNo = pCur.getString(pCur.getColumnIndex(
                                    ContactsContract.CommonDataKinds.Phone.NUMBER));
                            int phoneType = pCur.getInt(pCur.getColumnIndex(
                                    ContactsContract.CommonDataKinds.Phone.TYPE));


                            item.setId(id);
                            item.setImage(image);
                            item.setName(name);
                            item.setNumber(phoneNo);
                            item.setType(phoneType);
                            item.setIsStarred(favState);
                            contactList.add(item);

                        }
                        if (pCur != null)
                            pCur.close();
                    }
                }
            }
            if (cur != null)
                cur.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
我需要的是如何为所有联系人选择默认号码(为\u SUPER\u PRIMARY)。如果默认联系人号码不可用,则它将检索主要联系人(是_primary),但不应为同一联系人id提供多个联系人号码

    ContentResolver cr = getActivity().getContentResolver();

            String selection;
            String[] select = new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER, ContactsContract.Contacts.PHOTO_THUMBNAIL_URI, ContactsContract.Contacts.STARRED};
            if (isFav) {
                selection = "starred=1";
            } else {
                selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
                        + ("1") + "'";
            }

            String sortOrder =   ContactsContract.Contacts.DISPLAY_NAME
                    + " COLLATE LOCALIZED ASC";
            Cursor cur = cr.query(
                    ContactsContract.Contacts.CONTENT_URI, select, selection
                            + " AND " + ContactsContract.Contacts.HAS_PHONE_NUMBER
                            + "=1", null, sortOrder);// this query only return contacts which had phone number and not duplicated


List<ContactItem> contactList = new ArrayList<>();

        try {
            if (cur != null && cur.getCount() > 0) {
                while (cur.moveToNext()) {
                    int id = cur.getInt(
                            cur.getColumnIndex(ContactsContract.Contacts._ID));
                    String name = cur.getString(cur.getColumnIndex(
                            ContactsContract.Contacts.DISPLAY_NAME));
                    String image = cur.getString(cur.getColumnIndex(
                            ContactsContract.Contacts.PHOTO_THUMBNAIL_URI));
                    int favState = cur.getInt(cur.getColumnIndex(
                            ContactsContract.Contacts.STARRED));

                    if (cur.getInt(cur.getColumnIndex(
                            ContactsContract.Contacts.HAS_PHONE_NUMBER)) >= 1) {
                        String[] selectOnly = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.IS_SUPER_PRIMARY, ContactsContract.CommonDataKinds.Phone.IS_PRIMARY};

                        Cursor pCur = cr.query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                selectOnly,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? ",
                                new String[]{String.valueOf(id)}, null);

                        while (pCur != null && pCur.moveToNext()) {

                            ContactItem item = new ContactItem();

                            String phoneNo = pCur.getString(pCur.getColumnIndex(
                                    ContactsContract.CommonDataKinds.Phone.NUMBER));
                            int phoneType = pCur.getInt(pCur.getColumnIndex(
                                    ContactsContract.CommonDataKinds.Phone.TYPE));


                            item.setId(id);
                            item.setImage(image);
                            item.setName(name);
                            item.setNumber(phoneNo);
                            item.setType(phoneType);
                            item.setIsStarred(favState);
                            contactList.add(item);

                        }
                        if (pCur != null)
                            pCur.close();
                    }
                }
            }
            if (cur != null)
                cur.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
ContentResolver cr=getActivity().getContentResolver();
字符串选择;
字符串[]选择=新字符串[]{ContactsContract.Contacts.\u ID,ContactsContract.Contacts.DISPLAY\u NAME,ContactsContract.Contacts.HAS\u电话号码,ContactsContract.Contacts.PHOTO\u缩略图\u URI,ContactsContract.Contacts.started};
if(isFav){
selection=“starred=1”;
}否则{
选择=Contacts contract.Contacts.IN_VISIBLE_GROUP+“=”“
+ ("1") + "'";
}
字符串排序器=Contacts contract.Contacts.DISPLAY\u NAME
+“整理本地化ASC”;
游标cur=cr.query(
Contacts contract.Contacts.CONTENT\u URI,选择,选择
+“和”+Contacts contract.Contacts.HAS_电话号码
+“=1”,空,排序器);//此查询仅返回具有电话号码且不重复的联系人
List contactList=new ArrayList();
试一试{
如果(cur!=null&&cur.getCount()>0){
while(cur.moveToNext()){
int id=cur.getInt(
cur.getColumnIndex(ContactsContract.Contacts.\u ID));
字符串名称=cur.getString(cur.getColumnIndex(
Contacts contract.Contacts.DISPLAY_NAME));
字符串图像=cur.getString(cur.getColumnIndex(
Contacts contract.Contacts.PHOTO_缩略图_URI));
int favState=cur.getInt(cur.getColumnIndex(
联系人contract.Contacts.started);
if(cur.getInt(cur.getColumnIndex(
Contacts contact.Contacts.HAS_PHONE_NUMBER))>=1){
String[]selectOnly=new String[]{ContactsContract.CommonDataTypes.Phone.NUMBER,ContactsContract.CommonDataTypes.Phone.TYPE,ContactsContract.CommonDataTypes.Phone.IS\u SUPER\u PRIMARY,ContactsContract.CommonDataTypes.Phone.IS\u PRIMARY};
游标pCur=cr.query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,
仅限选择,
ContactsContract.CommonDataTypes.Phone.CONTACT_ID+“=?”,
新字符串[]{String.valueOf(id)},null);
while(pCur!=null&&pCur.moveToNext()){
ContactItem=新的ContactItem();
String phoneNo=pCur.getString(pCur.getColumnIndex(
Contacts contract.CommonDataTypes.Phone.NUMBER));
int phoneType=pCur.getInt(pCur.getColumnIndex(
contacts contract.commonDataTypes.Phone.TYPE));
项目.设置id(id);
项目.设置图像(图像);
item.setName(名称);
项目。设置编号(电话号码);
item.setType(电话类型);
项目。设置已启动(favState);
联系人列表。添加(项目);
}
如果(pCur!=null)
pCur.close();
}
}
}
如果(cur!=null)
cur.close();
}捕获(例外e){
e、 printStackTrace();
}