【发布时间】:2017-01-03 09:11:55
【问题描述】:
问题: 谁能建议我如何在 android 中的插入、更新和删除 URI 中附加标志 caller_is_syncadapter(示例)。 在使用 android 联系人同步 (SyncAdpater) 期间。 您的帮助将不胜感激。在此先感谢。
【问题讨论】:
问题: 谁能建议我如何在 android 中的插入、更新和删除 URI 中附加标志 caller_is_syncadapter(示例)。 在使用 android 联系人同步 (SyncAdpater) 期间。 您的帮助将不胜感激。在此先感谢。
【问题讨论】:
在研究过程中,我找到了上述问题的答案,希望对您有用。
案例 1: INSERT WITH 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();
如果有人在做这件事时遇到任何问题,请在 cmets 中告诉我 :) 谢谢,(: Happy Coding :)
【讨论】:
com.xiaomy 帐户,但我无法使用ContactsContract.RawContacts._ID 和ContactsContract.CALLER_IS_SYNCADAPTER 联系delete contact ,您能帮我摆脱困境吗