0
我在通過API for Android 2.0或更高版本編寫聯繫人時遇到此問題。 每次我寫入我的帳戶中已存在的同一聯繫人(Google帳號爲 )時,我有一部分聯繫人聚合正常,但其他 其他沒有。例如FN,N,ORG,TITLE等字段總是在一個 副本中,但是TEL,EMAIL,ADR都是額外添加的,因此在第二次寫入同一聯繫人後我有 2複製相同的TEL或EMAIL。如何強制API引擎不重複存在的數據?部分聯繫人在每次編寫同一聯繫人後重複(Android 2.0+)
代碼:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
.build());
...
// adding phone number
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneValue);
builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType); // work/home
builder.withValue(ContactsContract.CommonDataKinds.Phone.LABEL, phoneLabel);
ops.add(builder.build());
...
try {
contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
//
}
我試着添加:在AGGREGATION_MODE_DISABLED AGGREGATION_MODE。 但它沒有改變。
我會很高興在這種情況下的任何提示。
BR,虛假
是的我使用插入動作,而不是更新,但爲什麼只有一些字段加倍,扭曲,...? – Bogus 2010-06-01 10:42:37
數據表與標準聯繫人字段分開。電話,電子郵件,生日都存儲在單獨的表格中。這就是爲什麼只有這些領域翻了一番。 – Pentium10 2010-06-01 11:35:39
謝謝你的幫助。 我更改newUpdate()上的newInsert(),它對已經存在的聯繫人正常工作,否則沒有被寫入(電話簿是空的)。 工作聚合是如何進行的?我不想將每個聯繫人與新聯繫人進行比較。我認爲聚合引擎應該自己做 - 比較每個字段,並根據需要添加一些更改,但不會加倍。 我不想自己做。 看起來很複雜。我認爲必須有另一種解決方案。 我希望。 – Bogus 2010-06-01 11:57:48