我正在使用Android SDK中的NotesList示例程序进行试验。我在程序中做了轻微的更改,但是当我安装我的编辑版本时,当我尝试在设备上已经安装原始notes程序时,我在控制台中一直得到消息INSTALL_FAILED_CONFLICTING_PROVIDER。我需要在提供者中更改什么以使其成为唯一的数据库?如果我卸载原来的notes程序,然后安装我编辑过的版本,它就可以正常工作。


当前回答

如果你只需要使用facebook来登录你的应用程序,这里有一个提示: (此修复在cordova项目中工作) 必须完成步骤1和步骤2才能修复该问题。

1. 找到这个文件:platform/android/android.json 在该文件中: 删除此代码:

,{"xml": "<provider android:authorities=\"com.facebook.app.FacebookContentProvider<FACEBOOK_APP_ID>\" android:exported=\"true\" android:name=\"com.facebook.FacebookContentProvider\" />","count": 1
}

然后定位文件:platforms/android/app/src/main/androidManifest.xml

删除此代码:

        <provider android:authorities="com.facebook.app.FacebookContentProvider<FACEBOOK_APP_ID>" android:exported="true" android:name="com.facebook.FacebookContentProvider" />

现在应用程序可以运行良好.. 如果这个答案与OP无关,我很抱歉,但它可能会帮助许多其他有这个问题的人。我在其他地方找不到确切的答案。

其他回答

如果您正在使用Facebook SDK,那么问题可能在于您为Facebook提供商提供的“权限”值。

取代,

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider"
        android:exported="true" />

与- - - >

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider[YOUR_APP_ID]"
        android:exported="true" />

您可能需要更改defaultConfig。ApplicationId也在其他答案中建议。

可能是您在清单中声明的授权机构+提供者名称

基本上这发生在我身上,当我试图改变应用程序的包名。

在模拟器中,之前安装了相同的应用程序。当我试图在更改包名称后安装应用程序时,它说,权限已经被设备中的旧应用程序使用。

只需卸载应用程序,它就解决了我的问题。

同样,权限名称应该始终是:your.package.name.UNIQUENAME;

例子:

  <provider
        android:name="com.aviary.android.feather.cds.AviaryCdsProvider"
        android:authorities="your.package.name.AviaryCdsProvider"
       />

这是显而易见的,但也要确保你没有在android中混淆了对applicationId的引用:权威。

在我的例子中,我犯了一个错误,漏掉了该死的美元符号:

android:authorities="{applicationId}.myprovider"

而不是:

android:authorities="${applicationId}.myprovider"

这不会立即导致任何错误(因为它是有效的权威名称)。但几天后,当我尝试安装一个应用程序的不同变体时,要了解错误是什么真的很痛苦,因为错误消息没有提供关于内容提供者错误的太多信息。

解决此问题的另一种方法是比较合并的清单,寻找相同的权限。

我尝试了很多方法,但都没有找到解决方法。但是这个链接帮助了我……我想详细谈谈……

我正在运行Instrumented测试用例,所以我的应用程序在启动器中不可见…但它是安装的,因此使用相同的内容提供程序。所以,我应该卸载它。所以设置->应用程序管理器->所有下载的应用程序->卸载所有应用程序从您当前的开发包

现在,试着跑……这会有用的……