我正在开发一个应用程序(至少)有两种不同的包名 - 因此实际上是两个不同的应用程序,只要android系统有关。该应用程序使用Facebook的分享,所以我在清单中声明的供应商:Android的Facebook内容提供商权威
<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
这是根据Facebook的指示做的:https://developers.facebook.com/docs/sharing/android
这正常工作与一个应用程序,但要安装第二应用在同一个设备上失败,错误为INSTALL_FAILED_CONFLICTING_PROVIDER。这是清单中唯一定义的提供者,所以我很确定这是问题所在。如果我将提供程序字符串更改为不同的内容,则尝试打开Facebook共享对话框时会崩溃。
我见过说可以在多个android应用程序中使用相同的Facebook应用程序,但在Facebook的文档中找不到任何有关它的内容。有没有人这样做,你是如何解决提供者权限问题的?谢谢。
如果每个味道都有不同的applicationID,那么你可以做这样的事情:HTTP://计算器.com/a/30791242/1426565并在清单中的提供者声明中注入正确的applicationId,因为$(applicationId)实际返回包名,而不是您在gradle中定义的applicationId – Guardanis
最后回到此 - 我要去尝试它,但似乎像这样会遇到同样的问题,因为应用程序结束时只有来自构建过程的权限字符串,而不是直接在清单中。 – nasch
您应该看看在构建时基于applicationId注入不同的值。这里实际上是我上周的答案,应该可以帮助你做到这一点:http://stackoverflow.com/a/30791242/1426565 – Guardanis