【问题标题】:CALLER_IS_SYNCADAPTER uses in Insert,Update and Delete URI Android Contacts, Provide directionCALLER_IS_SYNCADAPTER 用于插入、更新和删除 URI Android 联系人,提供方向
【发布时间】:2017-01-03 09:11:55
【问题描述】:

问题: 谁能建议我如何在 android 中的插入、更新和删除 URI 中附加标志 caller_is_syncadapter(示例)。 在使用 android 联系人同步 (SyncAdpater) 期间。 您的帮助将不胜感激。在此先感谢。

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

    在研究过程中,我找到了上述问题的答案,希望对您有用。

    案例 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 ,您能帮我摆脱困境吗
    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 2013-01-14
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多