问题: 任何人都可以建议我如何在android(示例)中插入,更新和删除URI中附加标记caller_is_syncadapter。 在使用Android联系人同步(SyncAdpater)期间。 我们将非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
在研究期间,我找到了上述问题的答案,希望它对你有用。
案例1:使用CALLER_IS_SYNCADAPTER进行插入:
在您的内容提供商操作中插入联系信息时,必须在工作uri中附加。例如:
ArrayList ops = new ArrayList();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,account.type) .withValue(RawContacts.ACCOUNT_NAME,account.name).build());
ContentProviderResult[] res = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
Uri myContactUri = res[0].uri;
myContactUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
案例2:使用CALLER_IS_SYNCADAPTER进行更新:
ArrayList ops = new ArrayList();
ops.add(ContentProviderOperation.newUpdate(RawContacts.CONTENT_URI).withSelection(selectPhone,phoneArgs) .withValue(RawContacts.DIRTY,0).build());
ContentProviderResult[] res = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
Uri myContactUri = res[0].uri;
myContactUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
案例3:使用CALLER_IS_SYNCADAPTER删除: ArrayList ops = new ArrayList();
ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(ContactsContract.RawContacts.CONTACT_ID +“=?AND”+ ContactsContract.Groups.ACCOUNT_NAME +“=?AND”+ ContactsContract.Groups.ACCOUNT_TYPE +“=?”, new String [] {o.getPhoneContactId()+“”,account.name,account.type})。build());
ContentProviderResult[] res = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
Uri myContactUri = res[0].uri;
myContactUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
请在评论中告诉我,如果有人在做这件事时遇到任何问题:)谢谢,(:快乐编码:)