2015-09-01 20 views
7

Tôi có mã sau để thêm liên hệ vào nhóm vào ứng dụng liên hệ/ứng dụng người của android, nó thêm nhóm chứ không phải liên hệ trong nhóm đó, tôi đang thiếu gì? Tôi thêm liên lạc thành công cũng tạo ra nhóm, tôi có được các id của cả hai thứ, tôi đang sử dụng mã sau đây để liên kết các liên lạc với nhóm nhưng nó không hoạt động, nhóm luôn trống.cách thêm liên hệ vào nhóm android

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

} 

**** update ***** Một điều tôi thấy là nhóm này mà tôi tạo ra không nhận được đồng bộ với google, có lẽ thats địa chỉ liên lạc lý do không nhận được thêm.

Trả lời

2

Cuối cùng có thể thêm liên hệ t o nhóm, đây là những gì được yêu cầu, tạo một liên hệ đồng bộ với tài khoản google (bắt buộc), thứ hai tạo nhóm có thể đồng bộ hóa với dịch vụ đồng bộ hóa mặc định và sau đó thêm liên hệ theo cách tôi đang thêm vào mã ở trên.

nếu bạn tò mò trong biết làm thế nào để tạo ra nhóm đó có thể đồng bộ hóa, ở đây nó là

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; 


} 
1

Sử dụng trình ContentProviderOperation cho việc này.

ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); 

Nếu nhóm được hiện với 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()); 

Nếu nhóm không tồn tại:

// 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()); 

Và, áp dụng các thay đổi:

ContentProviderResult[] cpr = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList); 
+0

Tôi có một câu hỏi nếu tiếp xúc không được đồng bộ hóa với tài khoản google nó sẽ vẫn được thêm vào nhóm này, sử dụng phương pháp trên? –

Các vấn đề liên quan