簡體   English   中英

如何將聯系人添加到組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);

}

****更新*****我發現的另一件事是我創建的這個組沒有與谷歌同步,這可能就是聯系人沒有被添加的原因。

最后可以添加聯系人到組,這是必需的,創建一個與谷歌帳戶同步的聯系人(必填),第二個創建一個可以同步到默認同步服務的組,然后添加聯系人我在上面的代碼中添加的方式。

如果您對如何創建可以同步的組感到好奇,請點擊此處

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;


}

使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM