在分享之前需要做一些準備工作,申請成為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">
- 初始化FacebookSDK。(直接將最新版本的sdk導入到AS)
//寫在application
FacebookSdk.sdkInitialize(getApplicationContext());
- 初始化回調管理器
mCManager = CallbackManager.Factory.create();
- 進行分享
//初始化分享對話框
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();
}
}
- 設置分享結果返回
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCManager.onActivityResult(requestCode, resultCode, data);
}