Android 如何让其他应用程序知道要查找哪些内容?

Android 如何让其他应用程序知道要查找哪些内容?,android,android-contentprovider,android-contacts,contactscontract,Android,Android Contentprovider,Android Contacts,Contactscontract,我一直在尽我所能研究内容提供商,但我无法理解安装在手机上的其他应用程序如何访问我提供的内容。 其他应用程序怎么可能知道我的内容是什么 我正在制作一个联系人应用程序。其他应用程序如何获取我存储的联系人数据,其他应用程序似乎不可能知道我为内容设置了什么。 如果其他应用程序基本上需要知道只有我知道的秘密密钥是什么,那么这不就违背了提供内容的全部目的吗 我希望其他应用程序看到我的联系人应用程序数据,而不是忽略我的,只查看股票联系人应用程序的数据 如果这会导致开发者使用ContactsContract来获

我一直在尽我所能研究内容提供商,但我无法理解安装在手机上的其他应用程序如何访问我提供的内容。 其他应用程序怎么可能知道我的内容是什么

我正在制作一个联系人应用程序。其他应用程序如何获取我存储的联系人数据,其他应用程序似乎不可能知道我为内容设置了什么。 如果其他应用程序基本上需要知道只有我知道的秘密密钥是什么,那么这不就违背了提供内容的全部目的吗

我希望其他应用程序看到我的联系人应用程序数据,而不是忽略我的,只查看股票联系人应用程序的数据

如果这会导致开发者使用ContactsContract来获取联系人数据,那么为什么Android会创建ContactsContract提供商,因此默认情况下会使所有其他第三方联系人应用程序过时,因为其他开发者编写的代码本质上只会从库存Android联系人应用程序中获取联系人数据

Android似乎并没有为我提供任何通过ContactsContracts提供商向其他应用程序提供的数据。然而,Android的应用程序已经非常清晰、简单,并鼓励需要联系人数据的开发者使用ContactsContract

这是公然的权力争夺吗?我的联系人应用程序的全部意图是使我的联系人数据更加安全,这样,如果他们选择,谷歌或其他任何人都无法收集


有人能给我建议吗?这不可能是正确的,我希望我在这里误解了。仅供参考,我在Android开发者页面上找不到任何与我面临的问题相关的内容。

这绝对不是权力争夺。联系人被嵌入到操作系统中,因为用户要求手机存储电话号码以及姓名和其他与该电话号码相关的信息。谷歌没有做任何与flip手机当年不同的事情,只是让用户可以选择将联系人同步到云端。然而,这不是必需的。用户可以将联系人添加到其手机中,只需将其与手机关联即可

ContactsContract
允许应用程序访问存储在设备上的联系人,这只有在用户授予应用程序访问其联系人的权限后才能实现。有些应用程序使用此功能充当联系人管理器(以不同布局显示用户联系人的应用程序)。一些应用程序向用户提供在线备份联系人的服务,以防用户不想使用谷歌(如FullContact)。然而,大多数应用程序通常出于其他原因读取联系人,例如帮助用户找到在其应用程序中拥有帐户的朋友/熟人/同事等


为了解决其他开发人员如何实现应用程序的内容URI的问题,他们通过阅读开发人员的文档来实现。如果您是提供内容的开发人员,那么您有责任发布必要的文档,以便其他开发人员了解如何使用您的应用。

使用您的联系人内容提供商比使用库存联系人存储内容提供商有什么好处?作为用户或应用程序开发人员,我为什么要这样做?我当然更愿意使用ContactsContract提供商,而不是创建自己的,但不幸的是,这就是问题所在。我似乎无法向其他应用程序提供与股票应用程序相同的联系人数据。我正在构建一个100%替换联系人的应用程序,其中您的联系人数据更安全。另外,我只是觉得股票应用程序又丑又笨重,我可以做得更好。我希望我的提供商提供的数据与股票应用程序完全相同。为什么android不能发布关于我如何做到这一点的文档?这怎么公平呢?为什么不写一个SyncAdapter,然后将自己的数据写入默认的ContactsProvider?您还可以使用stock Contacts Provider编写自己的联系人应用程序。顺便说一句,stock Contacts应用程序和stock Contacts存储是两个独立的应用程序。stock Contacts应用程序只是stock Contacts提供者的“前端”。您可以编写自己的“前端”(就像以前的其他人一样)。所有联系人数据只需存储在数据库中。然后,内容提供商使其易于使用。这就是我从Android开发者网站上学到的Android模式。我完全理解ContactsContract提供商的工作原理。我需要知道如何在代码中使用它来提供数据,而不是检索数据。谷歌似乎不允许这样做?为什么会这样?感谢您提供有关为其他开发人员发布我的提供商的信息。我担心这是我唯一的选择,可能不得不选择route@JamisonMan111您可以通过将数据写入stock Contacts提供程序来提供数据。所有其他应用程序都是这样做的。无意冒犯,但我不认为您了解Android内容提供商,或者我仍然不明白您试图实现的目标是使用stock Contacts Provider无法实现的。无意冒犯,我感谢您的帮助。我认为我理解内容提供者,因为我使用它们,虽然不经常使用。我想我应该尝试将我的数据写入ContactsContract,我不知道这是一个选项。我最担心的一个问题是,我不想把我的联系信息绑定到手机上的谷歌账户上。使用Nexus6、Android 5.1.1,不再有保持联系人“本地”的选项。我输入的任何联系人现在都是手机上谷歌账户的一部分,我希望我的信息保密。