Как получить группы контактов в образце приложения Contact Manager?
Я запускаю пример приложения Contact Manager из Android SDK. Когда я добавляю контакт в свою учетную запись Gmail, он добавляется как "невидимый контакт". Я предполагаю, что это потому, что я не говорю контакту, к какой "группе" он должен быть отнесен. Я искал в интернете несколько дней и пришел с пустыми руками.
Что я действительно хочу сделать, так это добавить контакт в выбранную мной учетную запись контакта, и контакт должен быть связан с группой контактов в выбранной учетной записи Gmail, чтобы информация о контакте отображалась в контактах пользователя.
2 ответа
На какую версию Android вы ориентируетесь? Вы, конечно, знаете, что API Контактов радикально изменился в 2.x...
Я столкнулся с этой проблемой невидимых контактов, но только на 1.x. Я обнаружил, что решение было добавить во встроенную группу "Мои контакты":
// Add to the My Contacts group
ContentValues values = new ContentValues();
values.put(GroupMembership.PERSON_ID, contact.mAndroidId);
values.put(GroupMembership.GROUP_ID, 1); // 1 is always the ID of the built-in "My Contacts" group
activity.getContentResolver().insert(GroupMembership.CONTENT_URI,values);
Если вы хотите добавить определенную пользовательскую группу, а не Мои контакты, вам нужно будет выбрать правильный GROUP_ID из Contacts.Groups
Таблица.
Чтобы заставить его работать с новым API ContactsContract, вы можете добавить это в список ContentProviderOperation:
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, 1)
.build());