Android SyncAdapter能否修改由另一个SyncAdapter添加的联系人?

Android SyncAdapter能否修改由另一个SyncAdapter添加的联系人?,android,android-contacts,android-syncadapter,Android,Android Contacts,Android Syncadapter,如果帐户a的SyncAdapter a在ContactsContract.RawContacts表中创建了原始联系人,那么帐户B的SyncAdapter B能否更新SyncAdapter a添加的RawContact 特别感兴趣的是原始联系人表中的sync1或任何sync字段 如果这是可能的,那么可能产生的问题是什么 任何人都可以展示如何做到这一点的示例吗?在联系人DB上没有每个联系人的权限模型,每个应用程序和每个具有联系人权限的SyncAdapter都可以读取/写入任何联系人中的任何字段 但是

如果帐户a的SyncAdapter a在ContactsContract.RawContacts表中创建了原始联系人,那么帐户B的SyncAdapter B能否更新SyncAdapter a添加的RawContact

特别感兴趣的是原始联系人表中的sync1或任何sync字段

如果这是可能的,那么可能产生的问题是什么


任何人都可以展示如何做到这一点的示例吗?

联系人
DB上没有每个联系人的权限模型,每个应用程序和每个具有
联系人
权限的
SyncAdapter
都可以读取/写入任何联系人中的任何字段

但是,
RawContact
下的
syncX
字段由拥有的
SyncAdapter
用于专有目的(例如,跟踪哪些联系人需要同步,哪一个是脏的,最后一次同步的时间,后端联系人id值等),因此请确保不要触摸不知道其用途的任何东西,或者你可能会有腐蚀某些联系人的风险

要修改id为1234的
RawContact
上的
Sync1
值,请执行以下操作:

ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues(2);
values.put(RawContacts.SYNC1, "Hello World");
cr.update(RawContacts.CONTENT_URI, values, RawContacts._ID + "=" + 1234, null);
更新-批量更新

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

ops.add(ContentProviderOperation.newUpdate(RawContacts.CONTENT_URI)
      .withSelection(RawContacts._ID + "=" + 1234, null)
      .withValue(RawContacts.SYNC1, "Hello")
      .build());
ops.add(ContentProviderOperation.newUpdate(RawContacts.CONTENT_URI)
      .withSelection(RawContacts._ID + "=" + 5678, null)
      .withValue(RawContacts.SYNC1, "World")
      .build());

getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
ArrayList ops=new ArrayList();
添加(ContentProviderOperation.newUpdate(RawContacts.CONTENT\uURI)
.withSelection(原始联系人。_ID+“=”+1234,空)
.withValue(RawContacts.SYNC1,“您好”)
.build());
添加(ContentProviderOperation.newUpdate(RawContacts.CONTENT\uURI)
.withSelection(RawContacts._ID+“=”+5678,空)
.withValue(RawContacts.SYNC1,“世界”)
.build());
getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);

非常感谢marmor,我想知道如何使用ArrayList在google推荐的批处理操作中完成这些更新?如果同步列不是放置外来同步适配器标记的最佳位置,您认为标记可以放置在contactscontract.rawcontacts表中的何处?答案中添加了批处理示例