当前位置: 首页 > 知识库问答 >
问题:

Android脸书内容提供商权威

罗祺
2023-03-14

我正在开发一款应用程序,它(至少)有两种不同的软件包名称,因此就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应用程序中使用同一个脸书应用程序,但在脸书的留档中找不到任何关于它的东西。有人这样做过吗?你是如何绕过提供者权限问题的?谢谢。

共有3个答案

越飞翮
2023-03-14
<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="false"/>

导出可以是"真"

商辰钊
2023-03-14

我可以通过为调试和发布风格提供单独的清单来解决这个问题,在调试风格清单中,我为提供程序添加了代码段,但将导出的值设置为false。在我的发布风格清单中,我将导出的原始提供程序片段设置为true。

在我这样做之后,我不再得到INSTALL_FAILED_CONFLICTING_PROVIDER错误。

<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="false"/>
齐典
2023-03-14

我找到的一个可能的解决方案就是这里描述的

http://gradlewhy.ghost.io/overcoming-install-failed-conflicting-provider/

我已经使用这个(调试/发布变体)android.support.v4.content.FileProvider和到目前为止,我已经测试也适用于com.facebook.app.FacebookContentProvider。

只需添加到应用程序build.gradle

    debug {
        applicationIdSuffix '.debug'
        versionNameSuffix '-DEBUG'

        resValue "string", "fb_provider_id", "com.facebook.app.FacebookContentProvider{app_id_1}"
    }

    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        resValue "string", "fb_provider_id", "com.facebook.app.FacebookContentProvider{app_id_2}"
    }

然后在AndroidManifest中

<provider android:authorities="@string/fb_provider_id"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"/>
 类似资料:
  • 我有一个名为cv的ContentValues[]数组,它进入我的SQLite数据库。为了简单起见,我的数据库有以下3列(每行、日期和湿度的自动递增ID)数据库有3行。下面是一个添加到单行的数据示例。 这会循环3次,每个ContentValue都会被放入我的ContentValue数组中,然后再批量插入到我的数据库中。 我有一个每五分钟从服务器获取新数据的作业。所以我需要这个新数据来替换旧数据,并且

  • 最近几天,我一直在学习新的Android架构组件。跟进一些博文后,留档

  • 问题内容: 自三星S7推出以来,缺少一些短信,它们从未显示在content:// sms提供程序URI中。我注意到在同一运营商(在本例中为T- Mobile)上的多个Samsung设备(S6和/或S7)之间存在此问题,但可能不限于此。这些文本消息显示在默认的股票消息收发应用程序中,但是我找不到如何访问它们。请记住,通过该内容提供商我可以收到97%的短信,但最后3%使我难以理解。 我还查看了SIM卡

  • 我是Kubernetes的新手,他们的概念我不太清楚:云提供商。 我已经使用RKE(Rancher引擎)安装了我的库伯内特斯集群。 我的集群设置在rancher2的顶部。 我的节点是托管OVH服务器的虚拟机。 我设法让运行中的应用程序具有L7入口和ClusterIP服务,但每次我尝试使用L4负载平衡器时,负载平衡器都处于挂起状态。根据https://github.com/rancher/ranch

  • 我遇到了问题,我尝试在我的comsumer应用程序中实现内容提供程序: 这是我从App A(提供商)获得的Android清单: 这是我从App B(消费者)获得的Android清单: 应用程序A得我得提供商: process:com.erlanggakmoekasan.favoritemovies,pid:27146 java.lang.runtimeException:无法启动活动Compone

  • Galaxy S3-GPS图标没有出现,它没有启动onLocationChanged方法。(好吧) Htc one M8-GPS图标出现,闪烁,并触发onlocationchange(但如何?) 这时问题突然出现 null null