2015-11-20 72 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);