Android平台分享之Facebook

在分享之前需要做一些准备工作,申请成为Facebook Developer,添加自己的应用等等。在这就不重复这些准备工作,可以直接上官网按照流程去申请。
需要注意的是关于填写的签名。分成测试签名和正式签名,两者不一样。并且在你测试的过程中有可能会提示你关于这个签名没有填写到你的开发者里面,需要将错误提示的签名填写进去就可以了。

清单文件的配置





//关于你的appkey不可以直接写常量,需要用xml文件引用。否则会报异常
 
  1. 初始化FacebookSDK。(直接将最新版本的sdk导入到AS)
//写在application
FacebookSdk.sdkInitialize(getApplicationContext());
  1. 初始化回调管理器
mCManager = CallbackManager.Factory.create();
  1. 进行分享
//初始化分享对话框
ShareDialog mFBShareDialog = new com.facebook.share.widget.ShareDialog(mActivity);
//注册回调
mFBShareDialog.registerCallback(mCallbackManager, new FacebookCallback() {
    @Override
    public void onSuccess(Sharer.Result result) {
        Log.i(TAG, "onSuccess");
        Toast.makeText(mActivity, mActivity.getString(R.string.WEIBO_SHARE_SUCCESS),
                Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancel() {
        Log.i(TAG, "onCancel");
        Toast.makeText(mActivity, mActivity.getString(R.string.WEIBO_SHARE_CANCELED),
                Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onError(FacebookException error) {
        error.printStackTrace();
    }
});
if ( com.facebook.share.widget.ShareDialog.canShow(ShareLinkContent.class) ) {
//ShareLinkContent组件是分享链接的,无法单独分享图片。
    /*ShareLinkContent.Builder mShareLinkBuilder = new ShareLinkContent.Builder();
    *//*if( contetUrl != null ) {
        mShareLinkBuilder.setContentUrl(Uri.parse(contetUrl));
    }*//*
    Log.i(TAG, "title = " + title + " contentUrl = " + contetUrl + " imgUrl = " + imgUrl);
    mShareLinkBuilder.setContentUrl(Uri.parse(contetUrl));
    mShareLinkBuilder.setContentTitle(title);
    //mShareLinkBuilder.setContentDescription("sdasdasdasdasdsdsadasdsadasdasdsdasdsadsadasdsadsdasdasdasdasdasd");
    mShareLinkBuilder.setImageUrl(Uri.parse(imgUrl));
    ShareLinkContent mShareLink = mShareLinkBuilder.build();
    mFBShareDialog.show(mShareLink);*/
//SharePhoto是用于分享图片,只能是本地图片
    SharePhoto mSharePhoto = new SharePhoto.Builder()
            .setCaption(title)
            .setBitmap(bitmap)
            .build();
    SharePhotoContent mContent = new SharePhotoContent.Builder()
            .addPhoto(mSharePhoto)
            .build();
    mFBShareDialog.show(mContent);
    if ( bitmap != null && !bitmap.isRecycled() ) {
        bitmap.recycle();
    }
}
  1. 设置分享结果返回
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
        super.onActivityResult(requestCode, resultCode, data);    
        mCManager.onActivityResult(requestCode, resultCode, data);
}

你可能感兴趣的:(Android平台分享之Facebook)