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


当前回答

就像@Jose L Ugia所说的那样,让当局做出改变。

(您可以在清单中找到提供者(合并清单))

大多数情况下,它会连接到你实现的SDK,所以删除SDK实现行并同步Gradle,然后再次添加实现行并同步Gradle。

实施路线: 实现文件(<您的SDK>)

提供者代码:(你必须在merge-manifest中向下滚动才能找到它)

其他回答

就像@Jose L Ugia所说的那样,让当局做出改变。

(您可以在清单中找到提供者(合并清单))

大多数情况下,它会连接到你实现的SDK,所以删除SDK实现行并同步Gradle,然后再次添加实现行并同步Gradle。

实施路线: 实现文件(<您的SDK>)

提供者代码:(你必须在merge-manifest中向下滚动才能找到它)

我在几个应用程序中使用一个库时遇到了类似的问题。有必要用下面的提供者声明更新你的AndroidManifest.xml。

<manifest ...>
    <application ...>
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.here.this.library.provider" android:exported="false" android:grantUriPermissions="true" tools:replace="android:authorities">
        </provider>
    </application>  
</manifest> 

如果您在库项目中使用谷歌Maps +谷歌Play Services(特别是如果您最近从Eclipse迁移到Android Studio),当您尝试运行使用您的库的应用程序时,您可能会遇到此错误,而使用相同库的不同应用程序已经安装在您的设备上。

解决办法: 确保defaultConfig。applicationId是在构建的android部分定义的。Gradle文件为每个项目使用您的库

android {
    defaultConfig.applicationId = "com.company.appname"
}

我建议使用特定应用程序的包名。有了这个修复,提供者名称将不再冲突,应用程序将按预期运行。

症状

1)。当用户从Play Store安装应用程序时,他们会看到可怕的“-505”安装错误。

2)。当你试图通过Android Studio [INSTALL_FAILED_CONFLICTING_PROVIDER]安装第二个使用你的库的应用程序时,你会看到这个错误消息:

在你的控制台中,你会看到这样一条消息:

Package couldn't be installed in /data/app/com.company.appname-1
com.android.server.pm.PackageManagerException: 
Can't install because provider name 
com.google.android.gms.measurement.google_measurement_service 
(in package com.company.appname) is already used by
com.company.otherInstalledAppName

修复方法是确保defaultConfig. conf。applicationId是在构建的android部分定义的。Gradle文件为每个项目使用您的库

android {
    defaultConfig.applicationId = "com.company.appname"
}

更多的阅读可以在原始错误报告中找到:问题784:多个应用程序使用相同的授权提供者名称

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

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

如果你使用Facebook内部应用程序检查供应商标签内AndroidManifest文件,并检查你的项目Id是正确的android:权威

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