2

我正在使用Maven的Facebook SDK 3.22.0。構建Android SDK版本15.我還使用Android Studio 1.1.0和Gradle。Android Studio - 無法解析符號FacebookContentProvider

在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 { 
    } 
} 
+0

您是否在使用ADS與maven而不是gradle? – Divers

+0

我正在使用Gradle。 – Someone13

+0

比提供你的'build.gradle'文件的內容 – Divers

回答

3

不幸的是你不能使用FacebookContentProvider與Facebook SDK版本3.22.0,因爲它與4.0.0版本中引入的,你可以在GitHub上看到:

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

有兩種解決方法:

+0

那有效!謝謝! – Someone13

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以及最低Sdk是15?你爲什麼不使用最新的Facebook SDK?修復它,我認爲一切都會好起來的。

+0

在我的應用程序中,我有正確的Facebook應用程序ID爲1234,我改變它只是爲了這個問題。我將minSdkVersion更改爲15,將我的targetSdkVersion更改爲21.我使用該版本的Facebook SDK,因爲最新的版本不適合我。 – Someone13

+0

「不工作」 - 什麼不代表? – Divers

+0

在build.gradle中,我設置了:編譯'com.facebook.android:facebook-android-sdk:4.0.1'。當我這樣做時,我的java代碼中的大部分com.facebook導入都突然無法解析。 – Someone13

0

在Facebook的SDK的3.x版,它被稱爲NativeAppCallContentProvider,所以你需要做的是這樣的:

<provider 
    android:name="com.facebook.NativeAppCallContentProvider" 
    android:authorities="com.facebook.app.NativeAppCallContentProvider{Facebook-App-Id}" 
    android:exported="true" /> 
+0

請問我在哪裏可以放這個cde?在AndroidManifest中? –