如何将联系人添加到群组 android
how to add a contact to a group android
我有以下代码可以将联系人添加到 android 的联系人应用程序/人员应用程序中,它确实添加了该组但没有添加该组中的联系人,我缺少什么?我正在成功添加联系人并创建组,我确实得到了这两个东西的 ID,我正在使用以下代码将联系人与组相关联但它不起作用,组始终为空。
public Uri addToGroup(long personId, long groupId) {
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
personId);
values.put(
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId);
values
.put(
ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
return this.getActivity().getContentResolver().insert(
ContactsContract.Data.CONTENT_URI, values);
}
*****更新*****
我发现的另一件事是我创建的这个群组与 google 不同步,这可能就是联系人未被添加的原因。
为此使用 ContentProviderOperation。
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
如果群组已存在 groupId
,
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId).build());
如果群组不存在:
// create group and insert
ContentValues groupValues;
ContentResolver cr = context.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, newGroupId);
try {
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
} catch (Exception e) {
// handle
}
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, newGroupId).build());
然后,应用更改:
ContentProviderResult[] cpr = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
终于可以将联系人添加到组中,这是必需的,创建一个与 google 帐户同步的联系人(强制),然后创建一个可以同步到默认同步服务的组,然后添加联系人我在上面的代码中添加的方式。
如果你想知道如何创建可以同步的组,就在这里
public String createGroup(String name) {
String[] GROUP_PROJECTION = new String[] { ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
try {
ContentValues groupValues = null;
ContentResolver cr = this.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, name);
groupValues.put(ContactsContract.Groups.SHOULD_SYNC,true);
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
}
catch(Exception e){
Log.d("########### Exception :",""+e.getMessage());
return "1";
}
String groupID = null;
Cursor getGroupID_Cursor = null;
getGroupID_Cursor = this.getContentResolver().query(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, ContactsContract.Groups.TITLE+ "=?", new String[]{name}, null);
getGroupID_Cursor.moveToFirst();
groupID = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex("_id")));
return groupID;
}
我有以下代码可以将联系人添加到 android 的联系人应用程序/人员应用程序中,它确实添加了该组但没有添加该组中的联系人,我缺少什么?我正在成功添加联系人并创建组,我确实得到了这两个东西的 ID,我正在使用以下代码将联系人与组相关联但它不起作用,组始终为空。
public Uri addToGroup(long personId, long groupId) {
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
personId);
values.put(
ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId);
values
.put(
ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
return this.getActivity().getContentResolver().insert(
ContactsContract.Data.CONTENT_URI, values);
}
*****更新***** 我发现的另一件事是我创建的这个群组与 google 不同步,这可能就是联系人未被添加的原因。
为此使用 ContentProviderOperation。
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
如果群组已存在 groupId
,
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
groupId).build());
如果群组不存在:
// create group and insert
ContentValues groupValues;
ContentResolver cr = context.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, newGroupId);
try {
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
} catch (Exception e) {
// handle
}
operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, newGroupId).build());
然后,应用更改:
ContentProviderResult[] cpr = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
终于可以将联系人添加到组中,这是必需的,创建一个与 google 帐户同步的联系人(强制),然后创建一个可以同步到默认同步服务的组,然后添加联系人我在上面的代码中添加的方式。
如果你想知道如何创建可以同步的组,就在这里
public String createGroup(String name) {
String[] GROUP_PROJECTION = new String[] { ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
try {
ContentValues groupValues = null;
ContentResolver cr = this.getContentResolver();
groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, name);
groupValues.put(ContactsContract.Groups.SHOULD_SYNC,true);
cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
}
catch(Exception e){
Log.d("########### Exception :",""+e.getMessage());
return "1";
}
String groupID = null;
Cursor getGroupID_Cursor = null;
getGroupID_Cursor = this.getContentResolver().query(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, ContactsContract.Groups.TITLE+ "=?", new String[]{name}, null);
getGroupID_Cursor.moveToFirst();
groupID = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex("_id")));
return groupID;
}