получить текущие контакты в Android - PullRequest
1 голос
/ 03 мая 2011

Я знаю, что было много вопросов по этой проблеме.но я не могу найти ничего, что поможет мне.Я знаю, как получить все контакты Android, которые имеют номер телефона, по этому коду:

private List fillContactsList() {
        List tmpList = new ArrayList();

        Cursor c = getContentResolver().query(
                ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (c.moveToNext()) {
            String ContactID = c.getString(c
                    .getColumnIndex(ContactsContract.Contacts._ID));
            String name = c.getString(c
                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String hasPhone = c
                    .getString(c
                            .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
            if (Integer.parseInt(hasPhone) == 1) {
                Cursor phoneCursor = getContentResolver().query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + "='" + ContactID + "'", null, null);
                while (phoneCursor.moveToNext()) {
                    String number = phoneCursor
                            .getString(phoneCursor
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    con = new Contact();
                    con.setName(name);
                    con.setNumber(number);
                    tmpList.add(con);
                }
                phoneCursor.close();
            }
        }
        c.close();
        Collections.sort(tmpList);

        return tmpList;
    }

Результат этого на моем устройстве - 360 контактов, но когда я открываю свой контакт через телефон, я вижу только 120.Как я могу получить только группу, которая в данный момент отображается в списке контактов на телефоне?

Спасибо!Саар

1 Ответ

5 голосов
/ 03 мая 2011

Я не знаю, является ли это вашей проблемой или нет, но вы можете попробовать добавить IN_VISIBLE_GROUP к вашим критериям выбора.Я не помню точный синтаксис на макушке, но это было бы что-то вроде этого:

Cursor c = getContentResolver().query(
               ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'", null, null);
...