2012-11-23 32 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

這裏是我用於插入接觸到一個組中的代碼。我用的是組ID和聯繫人ID:

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.Data數據庫您的聯繫ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID &和CONTACT_ID和正確的mimetype,而不是直接添加到ContactsContracts.Group數據庫。

+1

看來你通過contact_id和group_row_id進行查詢,然後設置'MIMETYPE'。這真的有用嗎? – Deqing

+0

謝謝@Deqing!我之前添加了錯誤的代碼,我只是更新了它。 –

相關問題