3

次を使用して、マイアプリで新しい連絡先を作成できます。

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でその連絡先を確認できます。

4

1 に答える 1

2

どのように私はそれを理解しました...

あなたが使用することができます

ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
        .withValue(RawContacts.ACCOUNT_TYPE, "com.google")
        .withValue(RawContacts.ACCOUNT_NAME, "xxxxx@gmail.com")
        .build());

ここで、com.googleはアカウントのタイプで、xxxxx@gmail.com同期するアカウント ID です。

ありがとうございました

于 2012-11-02T08:15:44.293 に答える