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


当前回答

重命名包后可能会出现相同的错误。从AndroidManifest.xml中检查android:权威的string.xml中的值。

<provider
        android:authorities="@string/content_authority"
        android:name=".data.Provider"
        ... />

在string.xml中,该值应该与manifest中声明的包名相同。

<string name="content_authority">com.whatever.android.sunshine.app</string>

其他回答

我尝试了很多方法,但都没有找到一个解决方案: 我在AndroidManifest中修改了这个

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

使用adb命令安装。/adb Install -r abc.apk可以解决这个问题(即使设备的app版本更高,它也会被覆盖)

您可以卸载名称为“com”的软件包。在你运行应用程序之后,你在其中运行应用程序的设备。这对我很有效

解决方案1

在物理设备而不是模拟器上运行应用程序。我遇到了这个问题,我的应用程序没有定义一个内容提供者。

解决方案2

在另一个实例中,我有一个测试应用程序安装匹配相同的applicationId。

为了解决这个问题,我必须运行。/gradlew uA - uA是uninstallAll task的缩写。

你也可以使用Gradle面板,选择导航到app\install\uninstallAll任务

如果使用模拟器,则可以擦除数据

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