最近项目需要集成Facebook的分享功能,在网上看了一些实现例子,用的方法感觉比较老了。Facebook最新的Api已经换了很多。下面我就将最新的集成方式分享给大家。
facebook官方提供的集成方式已经很清晰了,我们只是对其进行了封装。想具体了解的可以去看下 facebook集成官网 官网需要才能browse。
下面来看下我们的封装类:
/** * facebook分享工具类 * Created by Song on 2016/7/5. * Email:[email protected] */ public class FaceBookShareUtils { private Activity mActivity ; private ShareDialog shareDialog; private CallbackManager callBackManager; public static final int SHARE_REQUEST_CODE = 0x111; private ShareLinkContent.Builder shareLinkContentBuilder; public FaceBookShareUtils(Activity activity, CallbackManager callBackManager, FacebookCallback facebookCallback) { this.mActivity = activity ; this.callBackManager = callBackManager; shareDialog = new ShareDialog(mActivity); //注册分享状态监听回调接口 shareDialog.registerCallback(callBackManager, facebookCallback, FaceBookShareUtils.SHARE_REQUEST_CODE); shareLinkContentBuilder = new ShareLinkContent.Builder(); } /** * 分享 */ public void share(String contentTitle,String imageUrl,String desc) { shareLinkContentBuilder.setContentTitle(contentTitle) .setImageUrl(Uri.parse(imageUrl)) .setContentDescription(desc) .setContentUrl(Uri.parse(mActivity.getString(R.string.app_site))); ShareLinkContent shareLinkContent = shareLinkContentBuilder.build(); if(shareDialog.canShow(ShareLinkContent.class)) { shareDialog.show(mActivity,shareLinkContent); } } }代码的封装流程很简单:
(1)在构造方法中初始化facebook分享的类,以及注册分享状态的监听接口。
(2)定义share方法,设置要分享的内容。
上面的定义好之后,我们在Activity或Fragment中调用如何代码:
/** * 分享到facebook */ @Override public void shareFaceBook() { callBackManager = CallbackManager.Factory.create(); new FaceBookShareUtils(this,callBackManager,facebookCallback) .share(mCourse.sName, mCourse.sPics.get(0), mCourse.tDesc); }
可以看到我们的FaceBookShareUtils工具类的第三个参数为状态的回调接口,定义如下:
/** * facebook分享状态回调 */ private FacebookCallback facebookCallback = new FacebookCallback() { @Override public void onSuccess(Object o) { Message msg = Message.obtain(); msg.what = SHARE_COMPLETE; mHandler.sendMessage(msg); } @Override public void onCancel() { Message msg = Message.obtain(); msg.what = SHARE_CANCEL; mHandler.sendMessage(msg); } @Override public void onError(FacebookException error) { Message msg = Message.obtain(); msg.what = SHARE_ERROR; mHandler.sendMessage(msg); } };上面的三个方法分别是分享成功,分享失败,分享错误的回调。相信做过国内第三方平台分享的童靴都很清楚了。
然后在onActivityResult方法中调用如下方法:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(FaceBookShareUtils.SHARE_REQUEST_CODE == requestCode) { callBackManager.onActivityResult(requestCode,resultCode,data); } }
上面即用于接收分享的状态。
最后一步,需要我们在AndroidManifest.xml中配置如下代码:
上面的ApplicationId就是在Facebook开发者平台上申请的Id。如果App发布的话,还需要进行审核等。android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/app_name" /> android:authorities="com.facebook.app.FacebookContentProvider259759727729348" android:name="com.facebook.FacebookContentProvider" android:exported="true" />
OK,到这里,facebook的分享集成就搞定啦,下篇文章我将会和大家分享下如何集成Facebook登录功能~