android - 将联系人从 ContentProvider 提供给标准联系人应用程序

标签 android android-contentprovider android-contacts contactscontract

我试过搜索,但我什至不能以简短的形式提出问题。

  1. 我有一个包含 id/username/mobile/email 的 SQLite 表。
  2. 我已经为它创建了 ContentProvider
  3. 我已经通过 AccountManager(AccountAuthenticator) 创建了帐户

一切正常,我可以使用我的函数 Sqlite2Contacts 创建联系人。 IE。我向 ContactsContract 提供的每个 SQLite 记录都包含我的帐户名称和类型。通过标准应用程序可以看到所有联系人,当我删除帐户时,所有联系人也将被删除。

一切正常,但是......我想我错过了什么。我想这应该是它的一些框架。

即我将我的 ContentProvider 绑定(bind)到...使用某种适配器的东西,无需手动同步联系人。

我需要的唯一答案是我能不能做,而不是实现。如果可以的话……我应该使用什么类/框架/适配器。

最佳答案

听起来你的方向错了,你不应该把你应用的联系人放在 ContentProvider 中。

要将特定于应用程序的联系人放入 Android 的联系人数据库中,您的应用程序需要两个组件:Account 和 SyncAdapter。

Account 允许用户进行身份验证(如果需要)并手动删除/同步您应用的联系人。 SyncAdapter 由系统调用或由您的应用以编程方式调用,并将 RawContacts 同步到您应用的 ACCOUNT_TYPE + ACCOUNT_NAME< 下的联系人数据库中.

您可以遵循 Udi 的两个教程:

官方教程在这里:
https://developer.android.com/guide/topics/providers/contacts-provider.html
(在 How to write a sync adapter for synchronizing data from your server to the Contacts Provider 下)

关于android - 将联系人从 ContentProvider 提供给标准联系人应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49125012/

相关文章:

android - 碰撞后如何在 Lua(使用 Corona SDK)中使对象处于非 Activity 状态?

java - 来自外部存储的 Android 文件选择器不适用于 API 级别 > 24

android - 尝试通过 ACTION_OPEN_DOCUMENT 获取自定义 DocumentsProvider 的 PersistableUriPermission() 失败

android - SQLite 数据库和 CursorLoaders

java - android java中 '^'(插入符号)的 key 代码?

android - 在 AOSP 设备上保持 Wifi-Direct 打开

android - Adapter类中的Holder类

Android 联系人选择器 : pick phone or email

Android ImageView 无法访问某些联系人照片

android - 从联系人中删除单个电话类型号码