我最近为我的应用程序创建了一个同步适配器,它会将我通过网络请求获得的联系人与手机中的联系人同步。我添加联系人没有问题,但是当联系人信息发生更改时,我无法正确更新联系人信息。例如,联系人上的公司名称字段。这是我尝试过的一些示例查询,但这些查询不起作用或仅部分起作用(即 - 一些联系人已更新但不正确):
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 中的示例,但无济于事。任何帮助是极大的赞赏。