我想在 Android 应用程序中创建一个 FB 分享按钮。我的最小 SDK 是 16。
在我的 gradle 文件中,我有以下依赖项:
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
问题是当我在 Facebook 分享按钮上设置 onClicklistener 时它没有响应(我什至使用断点来确保)。它永远不会触发回调并且按钮变灰。以下是我在 Facebook 上针对此应用程序的设置:
请注意,我在这里使用的是 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/