如何取消contentresolver applyBatch?

How to cancel contentresolver applyBatch?

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

我的问题:

如何取消以下操作?:

resolver.applyBatch(ContactsContract.AUTHORITY, ops);

到目前为止我尝试过的:

我试过像这样取消内容解析器的同步:

ContentResolver.cancelSync(null, ContactsContract.AUTHORITY);

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

我需要什么?

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

感谢您为阅读本文所做的一切努力。

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

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

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