2012-11-01 20 views
3

我可以使用创建我的应用程序一个新的联系人同步:安卓程序创建的接触不与Gmail帐户

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
int rawContactInsertIndex = ops.size(); 
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
     .withValue(RawContacts.ACCOUNT_TYPE, null) 
     .withValue(RawContacts.ACCOUNT_NAME, null).build()); 
ops.add(ContentProviderOperation 
     .newInsert(ContactsContract.Data.CONTENT_URI) 
     .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 
       rawContactInsertIndex) 
     .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
     .withValue(Phone.NUMBER, "9X-XXXXXXXXX").build()); 
ops.add(ContentProviderOperation 
     .newInsert(Data.CONTENT_URI) 
     .withValueBackReference(Data.RAW_CONTACT_ID, 
       rawContactInsertIndex) 
     .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
     .withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan") 
     .build()); 
try { 
    ContentProviderResult[] res = getContentResolver().applyBatch(
      ContactsContract.AUTHORITY, ops); 
} catch (RemoteException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (OperationApplicationException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

它工作正常,我可以看到联系人的创建,但是当我同步我的联系人使用我的Gmail帐户,我无法在Gmail联系人中看到。

注意:如果我使用设备的原生联系人应用创建联系人并与Gmail同步,我可以在Gmail中看到该联系人。

回答

2

我一些如何计算出来......

你可以使用

ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
     .withValue(RawContacts.ACCOUNT_TYPE, "com.google") 
     .withValue(RawContacts.ACCOUNT_NAME, "[email protected]") 
     .build()); 

其中,com.google是账户的类型和[email protected]是你想与同步您的帐户ID。

谢谢

+0

如果我想在自定义帐户下同步联系人,那么?? 我使用了相同的编码,但添加的联系人没有显示在我的帐户下。:( –

+0

你是什么意思的自定义帐户? –

+0

自定义帐户的意思是:如果我已经安装了ma应用程序名称XXX,组将创建为XXX联系人和服务器上的所有联系人将只被添加到这个组中 –