相关疑难解决方法(0)

Android Facebook内容提供商权限

我正在开发一个具有(至少)两种不同包名称的应用程序的应用程序 - 因此就android系统而言实际上是两个不同的应用程序.该应用程序使用Facebook共享,因此我在清单中声明了提供程序:

<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"/>
Run Code Online (Sandbox Code Playgroud)

这是根据Facebook的说明完成的:https://developers.facebook.com/docs/sharing/android

这适用于一个应用程序,但尝试在同一设备上安装第二个应用程序失败,错误为INSTALL_FAILED_CONFLICTING_PROVIDER.这是清单中定义的唯一提供程序,所以我很确定这是问题所在.如果我将提供程序字符串更改为不同的东西,则在尝试打开Facebook共享对话框时会崩溃.

我已经看到声称可以在多个Android应用程序中使用相同的Facebook应用程序,但在Facebook的文档中找不到任何关于它的内容.有没有人这样做过,你是如何解决提供商权限问题的呢?谢谢.

android facebook android-contentprovider

19
推荐指数
2
解决办法
1万
查看次数

使用Gradle覆盖库项目清单中的applicatoinID

我有一个引用库项目的主项目.它们都是用Gradle编译的.

这是主项目gradle文件的defaultConfig:

defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 2
    versionName "1.0"
}
Run Code Online (Sandbox Code Playgroud)

这是库项目gradle文件的defaultConfig:

defaultConfig {
    minSdkVersion 11
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我没有在库中声明任何applicationId.

我在我的项目中定义了一个权限,如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.library">

<permission android:name="${applicationId}.permission.C2D_MESSAGE"
            android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)

构建项目时,applicationId将替换为com.example.library(库包名称).这不是我想要的.我想用com.example.app替换它,因为它是我的应用程序的applicationId.

如果我将$ {applicationID}占位符放在app的清单文件中,一切正常.

有谁知道这是否可以实现以及如何实现?

android android-package-managers android-gradle-plugin

5
推荐指数
1
解决办法
1469
查看次数