【问题标题】:How to cancel contentresolver applyBatch?如何取消 contentresolver applyBatch?
【发布时间】:2017-06-01 21:36:33
【问题描述】:

我构建了一个应用程序,需要将 2000 个联系人导出到原生 Android 联系人。我使用 contentresolver.applyBatch 来实现这一点,但如果用户注销,我想删除所有应用程序导出的联系人。可能会发生 contentresolver 未完全完成保存联系人的情况。

我的问题:

如何取消以下操作?:

resolver.applyBatch(ContactsContract.AUTHORITY, ops);

到目前为止我所做的尝试:

我尝试像这样取消 contentresolver 的同步:

ContentResolver.cancelSync(null, ContactsContract.AUTHORITY);

这不起作用,我也不确定 null 值。它说它需要一个帐户来停止同步它。但是我没有在特定帐户上开始同步,那为什么需要它呢?

我需要什么?

类似 resolver.stopBatch(一种停止应用批处理的方法)。

感谢您阅读本文所付出的所有努力。

【问题讨论】:

    标签: android android-contacts android-contentresolver


    【解决方案1】:

    如果我理解用例,当用户登录您的应用程序时,您会将 new RawContacts 同步到设备中。

    如果是这种情况,您应该创建一个SyncProvider,并在与您的应用和包名称相关联的帐户上将其同步到 RawContacts。 这样,当用户卸载您的应用程序时,该帐户会与您同步到设备中的数据一起自动删除,当用户退出她的帐户时,您只需以编程方式删除联系人帐户,这也会删除所有数据已同步到设备。

    阅读这些教程,了解如何创建联系人帐户 SyncProvider 并使用它来同步您帐户中的联系人:

    【讨论】:

    • 我花了一些时间阅读所有这些链接,但是如何在同步适配器中创建 RawContacts?还在使用 ContentResolver?
    • 是的,把东西放在数据库里是一样的,只要确保你的新 RawContacts 的 account_type 和 account_name 值属于你自己创建的帐户
    • 我一定会调查的。它仍然与我的感觉相矛盾,因为我认为为此创建一个帐户很奇怪。但我认为我绝对需要一个 SyncService,正如我在教程中所读到的,你需要一个帐户。谢谢你的回答,如果我成功了,我会告诉你的:)。
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多