Android Studio - 无法解析符号FacebookContentProvider

时间:2015-04-26 08:47:04

标签: android maven android-studio android-contentprovider facebook-android-sdk

我正在使用Maven的Facebook SDK 3.22.0。构建Android SDK版本15.我也使用带有Gradle的Android Studio 1.1.0。

在AndroidManifest.xml中我正在尝试使用FacebookContentProvider,但每次尝试时,我都会遇到问题无法解析符号FacebookContentProvider。关于如何解决这个问题的任何想法?

我遇到的具体问题是:

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

这是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.whatever"
android:versionCode="100"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="11" />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.MICROPHONE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

    <activity
        android:name="com.whatever.MainActivity"
        android:label="@string/app_name" 
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="com.google.android.gms.ads.AdActivity"
              android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode"
              android:theme="@android:style/Theme.Translucent" />

    <activity android:name="com.facebook.LoginActivity"
              android:theme="@android:style/Theme.Translucent.NoTitleBar"
              android:label="@string/app_name" />

    <activity android:name="com.whatever.Friends"
              android:screenOrientation="portrait" />
    <activity android:name="com.whatever.Recent"
              android:screenOrientation="portrait">
    </activity>

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

这是我的build.gradle:

apply plugin: 'com.android.application'

dependencies {
    compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
    compile('org.apache.httpcomponents:httpmime:4.3') {
        exclude module: "httpclient"
    }
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.facebook.android:facebook-android-sdk:3.22.0'
}

android {
    compileSdkVersion 15
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.whatever"
        minSdkVersion 15
        targetSdkVersion 15
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES'
    }
    productFlavors {
    }
}

2 个答案:

答案 0 :(得分:3)

遗憾的是,您不能将FacebookContentProvider与Facebook SDK版本3.22.0一起使用,因为它是在4.04版本中引入的,您可以在GitHub上看到:

https://github.com/facebook/facebook-android-sdk/commits/master/facebook/src/com/facebook/FacebookContentProvider.java

您有两种解决方案:

答案 1 :(得分:1)

Quote

  

将您的应用ID附加到权限值的末尾。例如,如果   您的Facebook应用ID为1234,声明如下:

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

您确定自己的应用ID是1234吗?同样为什么目标sdk是15,因为min sdk是15?你为什么不使用最新的facebook sdk?修复它,我认为一切都会好的。