我正在从 Android SDK 运行 Contact Manager 示例应用程序。当我将联系人添加到我的 Gmail 帐户时,它会被添加为“隐形联系人”。我假设这是因为我没有告诉联系人它应该分配到哪个“组”。我已经在互联网上浏览了几天,但空手而归。
我真正想做的是将联系人添加到我选择的联系人帐户中,并将联系人与所选 Gmail 帐户中的联系人组关联,因此联系人的信息将显示在用户的联系人中。
我正在从 Android SDK 运行 Contact Manager 示例应用程序。当我将联系人添加到我的 Gmail 帐户时,它会被添加为“隐形联系人”。我假设这是因为我没有告诉联系人它应该分配到哪个“组”。我已经在互联网上浏览了几天,但空手而归。
我真正想做的是将联系人添加到我选择的联系人帐户中,并将联系人与所选 Gmail 帐户中的联系人组关联,因此联系人的信息将显示在用户的联系人中。
要使其与新的 ContactsContract API 一起使用,您可以将其添加到 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());
你的目标是什么版本的安卓?您当然知道 Contacts 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);
Contacts.Groups
如果要添加到特定的用户定义组而不是“我的联系人”,则需要从表中找出正确的 GROUP_ID 。