最近、アプリ用の同期アダプターを作成しました。これにより、Webリクエストを介して取得した連絡先が電話の連絡先と同期されます。連絡先の追加に問題はありませんが、連絡先情報が変更されたときに連絡先情報を正しく更新することができません。たとえば、連絡先の[会社名]フィールド。これが私が試したクエリの例ですが、機能しなかったか、部分的にしか機能しませんでした(つまり、一部の連絡先は更新されましたが、正しくありません)。
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.Organization.COMPANY, "New Company");
context.getContentResolver().update(Uri.parse("content://com.android.contacts/data/"), values, BaseColumns._ID + "=?", new String[] { String.valueOf(id) } );
また、Androidのドキュメントで提案されているように、これをバッチで実行してみました。
builder = ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(BaseColumns._ID + " =?", new String[]{String.valueOf(id)});
builder.withValue(
ContactsContract.CommonDataKinds.Organization.COMPANY,
"New Company Name!");
operationList.add(builder.build());
私はContactContractsのドキュメントを読み、もともとこのチュートリアルに従っていました。AuthenticatorActivity
また、APIの例をチェックインしても役に立ちませんでした。どんな助けでも大歓迎です。