美文网首页
Android平台分享之Facebook

Android平台分享之Facebook

作者: Blue_Kid | 来源:发表于2016-06-23 14:12 被阅读0次

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

    清单文件的配置

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:label="@string/app_name"
        >
    </activity>
    
    <provider
        android:authorities="com.facebook.app.FacebookContentProvider917150658398254"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"
        />
    //关于你的appkey不可以直接写常量,需要用xml文件引用。否则会报异常
    <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebookAppKey"> 
    
    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<Sharer.Result>() {
        @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

          本文链接:https://www.haomeiwen.com/subject/zcnndttx.html