Android facebook SDK - 无法为 facebook sharebutton 设置 onclicklistener

标签 android facebook

我想在 Android 应用程序中创建一个 FB 分享按钮。我的最小 SDK 是 16。

在我的 gradle 文件中,我有以下依赖项:

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

问题是当我在 Facebook 分享按钮上设置 onClicklistener 时它没有响应(我什至使用断点来确保)。它永远不会触发回调并且按钮变灰。以下是我在 Facebook 上针对此应用程序的设置:

enter image description here

请注意,我在这里使用的是 DEBUG key 哈希。所以我所做的一切都不是在发布中,而是在调试签名中。

在 android list 中,我在应用程序标签内定义了以下内容:

<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,我有自己的应用程序子类(记录在 list 应用程序标签中),它工作正常并且我的断点得到它:

public class MyApplication extends Application {

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

    FacebookSdk.sdkInitialize(this);
}

除 facebook 按钮外,应用程序构建并运行良好。在布局文件中,我声明了一个 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"
    />

然后在我的 Activity 类中,我通过以下方式在 onCreate 中获得对此 View 的引用:

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

我的 Activity 实现了 onClickListener,其中的所有内容都是一个日志语句,它永远不会被打印出来,断点也不会出现在那里。我还需要在这里做什么。我正在运行一个 lolipop 设备,我在手机上登录了 facebook 应用程序。我不知道是否需要这样做,但我还在我的 Activity oncreate 方法中创建了 callbackManager,如下所示:

mCallbackManager = CallbackManager.Factory.create();

并且使用以下命令成功创建了调试散列:

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

我的最终目标是,当用户单击 facebookshare 按钮时,我将运行以下代码以将内容分享到 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);

最佳答案

经过一天的挫折,我想通了这个问题。

在 android list 中,我直接将 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);

关于Android facebook SDK - 无法为 facebook sharebutton 设置 onclicklistener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817636/

相关文章:

android - 膨胀 CollapsingToolbarLayout 时出错

android - QNetworkAccessManager - 首先 GET 非常慢

android - 主动跟踪任务示例在 Mavic Air 中不起作用

java - Facebook Android SDK 需要 API 15 : Android 4. 0.3 或更高版本。我应该使用工具:override to force usage?

javascript - 显示多个 Twitter 分享按钮?

facebook - 该网址已被识别为恶意和/或滥用

ios - Facebook sdk 不从 ios 应用程序发布图片

android - Gradle位置不正确如何解决Android Gradle错误

android - 为嵌套数组改造 simpleXML 转换器

iphone - Facebook 中的图片分享功能无法使用