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


当前回答

遇到这个问题。

解决方法:

1 -打开AndroidManifest.xml

2 - ctrl+f查找“provider”

3 -找到提供者并更新你的根目录名。

运行项目。希望问题会得到解决!

其他回答

在android:authorities中列出的权限必须是唯一的。引用此属性的文档:

为了避免冲突,授权名称应该使用java风格的命名约定(例如com.example.provider.卡通提供者)。通常,它是实现提供者的ContentProvider子类的名称

检查<provider标签下的android:authorities属性


检查您的包名称是否正确

是啊!我和你有同样的问题。就像你说的,你用了“变异”。保持“权威”的唯一性,你可以这样写

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

如果你在一个应用程序中使用了不止一个lib,原因与上面相同。

当你安装了旧版本的应用程序并对(支持)库或清单文件进行了更改时,也会发生这种情况。删除旧的应用程序从您的设备(设置->应用程序-> <您的应用程序> ->卸载)将解决这个问题。

如果您正在使用提供者检查,并按照以下方法进行检查

        <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="androidx.multidex.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_path" />
    </provider>

或者使用它

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.contentprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_path" />
    </provider>

此外,如果应用程序已经退出在您的移动卸载,然后检查