[英]Android: Facebook like button doesn't work
我正在尝试将 Facebook 的“赞”按钮集成到我的 Android 应用程序中。 我正在使用 Facebook SDK 4.1.2。
我的应用程序具有使用片段的导航抽屉的主要活动。 其中一个片段有 ListView。 我需要每个列表项中的 Facebook“喜欢”按钮。 我正在使用自定义 BaseAdapter 来构建列表项。 我在登录 Facebook 和从某些 Facebook 页面获取帖子时没有问题。
但是我遇到了下一个问题:
顺便问一下,有没有可能让这个按钮看起来像这样?
(来源: jonathandoctor.net )
这个任务我缺少什么?
这是我的代码的一部分:
主活动.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.