Android实现Facebook第三方分享

最近项目需要集成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中配置如下代码:


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" />
上面的ApplicationId就是在Facebook开发者平台上申请的Id。如果App发布的话,还需要进行审核等。

OK,到这里,facebook的分享集成就搞定啦,下篇文章我将会和大家分享下如何集成Facebook登录功能~

你可能感兴趣的:(Android)