繁体   English   中英

Android:Facebook 点赞按钮不起作用

[英]Android: Facebook like button doesn't work

我正在尝试将 Facebook 的“赞”按钮集成到我的 Android 应用程序中。 我正在使用 Facebook SDK 4.1.2。

我的应用程序具有使用片段的导航抽屉的主要活动。 其中一个片段有 ListView。 我需要每个列表项中的 Facebook“喜欢”按钮。 我正在使用自定义 BaseAdapter 来构建列表项。 我在登录 Facebook 和从某些 Facebook 页面获取帖子时没有问题。

但是我遇到了下一个问题:

  1. “喜欢”按钮没有任何喜欢计数,它看起来像这样

1

顺便问一下,有没有可能让这个按钮看起来像这样?

2
(来源: jonathandoctor.net

  1. 我的“喜欢”动作没有任何效果。 我按下“喜欢”按钮,一些屏幕出现并快速关闭,然后我看不到按钮的任何更改,并且 Facebook 对象(某些页面帖子)没有得到我的喜欢(我通过浏览器检查) . 换句话说,我喜欢的按钮不会记录我喜欢的按钮是否被按下。 而且类似的动作也不会成功。

这个任务我缺少什么?

这是我的代码的一部分:

主活动.java

private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FacebookSdk.sdkInitialize(getApplicationContext());

    callbackManager = CallbackManager.Factory.create();

    OpenFacebookSession();

    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();

    // Set up the drawer.
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout));

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

列表适配器

public class ListAdapter extends BaseAdapter {  

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (inflater == null)
            inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null)
            convertView = inflater.inflate(R.layout.feed_item, null);

        LikeView likeView = (LikeView) convertView.findViewById(R.id.like_view);
        likeView.setLikeViewStyle(LikeView.Style.BOX_COUNT);
        likeView.setAuxiliaryViewPosition(LikeView.
            AuxiliaryViewPosition.INLINE);

        likeView.setObjectIdAndType(someID,//some Facebook object ID
                                    activity-launchmode/en",
                                    LikeView.ObjectType.OPEN_GRAPH);
        return convertView;

    }


}

feed_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/feed_bg"
    android:orientation="vertical" >

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginLeft="@dimen/feed_item_margin"
    android:layout_marginRight="@dimen/feed_item_margin"
    android:layout_marginTop="@dimen/feed_item_margin"
    android:background="@drawable/bg_parent_rounded_corner"
    android:orientation="vertical"
    android:paddingBottom="@dimen/feed_item_padding_top_bottom"
    android:paddingTop="@dimen/feed_item_padding_top_bottom" >

    <com.facebook.share.widget.LikeView
        android:id="@+id/like_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/feedImage1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    </RelativeLayout>

</LinearLayout>

使用 Like 按钮需要应用程序批准,因此在开发过程中,只有在您的应用程序中具有管理员/开发人员/测试员角色的用户才能访问它。 一旦获得批准,任何用户都可以使用该功能。

使这项工作的完美解决方案如下。

在这里,我们考虑到您已经生成了 facebook 应用程序并输入了 Hash_key ,如果没有,您也已将您的帐户添加为测试员

将此添加到您的 xml 视图中。

<com.facebook.share.widget.LikeView
    android:id="@+id/like_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

然后将此添加到您的 OnCreate 方法中

    FacebookSdk.sdkInitialize(MainActivity.this);
    callbackManager = CallbackManager.Factory.create();
     LikeView likeView = (LikeView) findViewById(R.id.likeView);
    likeView.setLikeViewStyle(LikeView.Style.BUTTON);
    likeView.setAuxiliaryViewPosition(LikeView.AuxiliaryViewPosition.INLINE);
    likeView.setObjectIdAndType("https://www.facebook.com/Rultech",LikeView.ObjectType.OPEN_GRAPH);

注意: LikeView.Style.BUTTON 可以根据您的需要使用更改。

然后将以下代码添加到 Manifest。

    <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/fb_app_id" />
    <provider android:authorities="com.facebook.app.FacebookContentProvider_fb_app_id"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"/>

然后 onActivityResult 添加这个

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

如果手机上未安装 Facebook 应用程序,则可能会出现故障。

最后运行应用程序。 这肯定会起作用,我们已经针对FACEBOOK SDK 4.0.1对其进行了测试,不确定是否适用于以上版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM