Android2.2デバイスで奇妙な問題が発生しました。既存の連絡先があり、次の方法で変更操作を行います。
ContentProviderOperation.Builder builder =
ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=? AND " +
ContactsContract.Data.MIMETYPE + "=?",
new String[]{id,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE})
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,displayName)
.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,familyName)
.withValue(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,middleName)
.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,givenName)
.withValue(ContactsContract.CommonDataKinds.StructuredName.PREFIX,honorificPrefix)
.withValue(ContactsContract.CommonDataKinds.StructuredName.SUFFIX,honorificSuffix);
mApp.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
連絡先は正しく変更されます。連絡先名にはすべての新しい値が表示されます。
ただし、連絡先アプリを見ると、変更を行うと「(不明)」という新しい連絡先が表示されます。連絡先はいくつでも挿入できますが、変更するたびに新しい「(不明)」連絡先が作成されます。
誰かアイデアはありますか?