2015-11-20 69 views
1

我想創建Android應用程序FB分享按鈕。我最小的SDK是16Android的Facebook的SDK - 無法設置onclicklistener爲Facebook sharebutton

我gradle這個文件

我有以下依賴性:

compile 'com.facebook.android:facebook-android-sdk:4.7.0' 

的問題是,當我在Facebook上分享按鈕其未響應設置onClicklistener(我甚至使用斷點確保)。它從來沒有擊中回調,並且按鈕變灰。下面是我在Facebook上設置這個程序:

enter image description here

請注意,我在這裏使用調試密鑰散列。所以我所做的一切都不在發行版中,而是在調試簽名中。

在Android清單我有以下的應用程序標籤中定義:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="123456789"/> 


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

要初始化的Facebook SDK我有我自己的應用程序(記錄於艙單應用標籤)的子類,工作正常&我休息分獲得它:

public class MyApplication extends Application { 

@Override 
public void onCreate() { 
    super.onCreate(); 

    FacebookSdk.sdkInitialize(this); 
} 

}

應用構建和運行正常除facebo確定按鈕。在佈局文件,我宣佈這樣一個Facebook的分享按鈕:

<com.facebook.share.widget.ShareButton 
    android:id="@+id/fb_share_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="15dp" 
    android:contentDescription="@string/share_fb" 
    /> 

然後在我的活動類IM通過以下獲得這一觀點在的onCreate參考:

mShareButton = (ShareButton)findViewById(R.id.fb_share_button); 
mShareButton.setOnClickListener(this); 

和我的活動實現onClickListener並在所有的多數民衆贊成是永遠也不會被印刷和突破點,不打有一個日誌語句。我還需要在這裏做什麼。我正在掀起了棒棒糖設備,我登錄到我的手機上的Facebook應用程序。我不知道這是否是必要的,但我也創造了callbackManager像這樣我的活動onCreate方法:

mCallbackManager = CallbackManager.Factory.create(); 

和調試散列是用下面的命令創建成功:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 

我的最終目標是,當用戶點擊Facebook分享按鈕,我會運行下面的代碼共享的東西給Facebook:

if (ShareDialog.canShow(ShareLinkContent.class)) { 
      ShareLinkContent linkContent = new ShareLinkContent.Builder() 
        .setContentTitle("Hello Facebook") 
        .setContentDescription(
          "The 'Hello Facebook' sample showcases simple Facebook integration") 
        .setContentUrl(Uri.parse("http://developers.facebook.com/android")) 
        .build(); 

      mShareDialog.show(linkContent); 

回答

2

沮喪的一天,我想通了,國際空間站後UE。

在Android清單中,我已經將FB應用程序ID直接定義爲字符串。我試圖要快了測試,所以我只是用一個原始字符串,如「12345667」作爲元數據的價值。相反,您必須按照以下方式使用字符串值,問題已解決。

<meta-data android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/fb_app_id"/> 

注意:您不需要爲分享按鈕設置onclicklistener。剛發的內容是這樣的:

ShareLinkContent content = new ShareLinkContent.Builder() 
      .setContentUrl(Uri.parse("https://developers.facebook.com")) 
      .build(); 

    mShareButton.setShareContent(content);