2012-11-23 3 views
1

연락처를 그룹에 삽입해야합니다. 나는 이드의 그룹이있다.그룹의 ID로 특정 그룹의 연락처 추가

연락처는 내부 계정에 삽입되지만 그룹 지정에는 없습니다. 나는 이유를 모른다. 누구든지 나를 도울 수 있습니까?

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
Account[] accounts = AccountManager.get(getActivity()).getAccounts(); 

String accountName = null; 
String accountType = null; 
String account = "[email protected]"; 
    for(Account account2 : accounts) 
     if(account2.name.equals(account)){ 
      accountName = account2.name; 
      accountType = account2.type; 
     } 
ops.add(ContentProviderOperation 
     .newInsert(ContactsContract.RawContacts.CONTENT_URI) 
     .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType) 
     .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName) 
     .build()); 

ops.add(ContentProviderOperation 
     .newAssertQuery(ContactsContract.Groups.CONTENT_URI)  
     .withSelection(ContactsContract.Groups._ID + " = ?", new String[]{Long.toString(idGroup)}) //new String[]{Long.toString(idGroup)} 
     .withExpectedCount(1) 
     .build()); 

ops.add(ContentProviderOperation 
     .newInsert(ContactsContract.Data.CONTENT_URI) 
     .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
     .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
     .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "RICARDITO bla bla2") 
     .build()); 

try{ 
    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
}catch(Exception e){ 
    Log.e(ClientEditContact.class.getName(), e.toString()); 
} 

답변

0

다음은 연락처를 그룹에 삽입하는 데 사용하는 코드입니다. 난 당신이 행을 설정하여 ContactsContract.Data 데이터베이스에 연락처를 추가 할 필요가 있다고거야

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId) 
         .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupId) 
         .build()); 

       try 
       { 
        resolver.applyBatch(ContactsContract.AUTHORITY, ops); 
       } catch (RemoteException e) { 

       } catch (OperationApplicationException e) { 
       // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

&과를 ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID : 나는 그룹 ID와 연락처 ID를 사용 ContactContract_Group 데이터베이스에 직접 추가하는 대신 CONTACT_ID와 올바른 MIME 유형을 사용하십시오.

+1

contact_id 및 group_row_id로 쿼리 한 다음 'MIMETYPE'을 설정 한 것으로 보입니다. 이게 진짜로 효과가 있니? – Deqing

+0

Thanks @Deqing! 이전에 잘못된 코드를 추가했는데 방금 업데이트했습니다. –