内容提供者INSTALL_FAILED_CONFLICTING_PROVIDER(安装内容提供者作为一个单独的apk)

我有两个应用程序使用相同的内容提供者,但是我不能在这两个应用程序中放置相同的内容提供者 – 它显示INSTALL_FAILED_CONFLICTING_PROVIDER错误。 所以我把我的内容提供者放在第三个.apk文件中,并且使用了这个来自两个应用程序的文件,它运行的很好。

现在的问题是 – 必须先安装内容提供者apk,才能在设备上安装这两个应用程序中的任何一个。 否则,它显示提供程序安装过程中未发现错误。

那么,我怎样才能确保在任何其他apks安装之前安装提供者apk?

有没有办法将内容提供者apk与其他两个apk分开合并,所以它们将作为两个应用程序一起安装,并且不会显示INSTALL_FAILED_CONFLICTING_PROVIDER错误?

我需要将内容提供者apk与两个应用程序合并,因为用户可能不会同时安装这两个应用程序,也可能将它们都安装在一个设备上。

我可以想到的一个解决scheme是,使内容提供程序的两个应用程序与不同的packageid内部的一部分,并使用android:exported = true导出它。 两者可能都使用相同的代码。

在应用程序开始时,您检查设备上是否存在其他内容提供程序,如果它在那里,则开始使用它,否则将回退到本地内容提供程序。 当其他应用程序安装时,它可以执行相同的检查。

为了保护您的供应商免受其他人的侵害,您可以定义一个自定义权限来保护它,以便您的应用程序只能使用它,或者您也可以将一些自定义身份validation(如某些密钥)用于访问内容提供者。 你可以在内容提供者的所有方法中拥有这个authentication码。

你可以通过改变AndroidManifest.xml文件中的android:authorities的值来解决这个问题。 错误的原因是安装在您的设备上的另一个应用程序已经为android:authorities使用相同的值。

要解决此错误: Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER

在你的AndroidManifest.xml文件中更改android:authorities的值,在你的设备上安装的另一个应用程序已经为android:authority使用了相同的值。

你在你的清单文件(AndroidManifest.xml)中使用一个像Facebook API注册数字之类的单一数据,这两个程序都已经安装了,并且你不能安装。 你需要:

  1. 尝试find这样的东西,检查是否适合您当前的程序:

android:authorities =“com.facebook.app.FacebookContentProvider23473465463573466”android:name =“com.facebook.FacebookContentProvider”android:exported =“true”/>

  1. 检查是否不是在另一个程序dublicate如果是你试图安装的程序。

这意味着你的手机已经有相同的权威提供者,由不同的应用程序注册(可以是你的其他例子)。改变你的提供者权限,即android:authorities和你的好去。