我正在整合facebook sdk 3.21.1,一切顺利,但只有一个问题。 当我点击分享按钮时,它会提示我一个对话框(如果是FacebookDialog.ShareDialogBuilder)用于发布内容。如果按下后退按钮,则会调用com.facebook.widget.WebDialog.OnCompleteListener的onCompleteMethod,我无法获取该事件,无论是成功发布还是按下后退按钮。 因为我想向用户显示确切的祝酒消息。
这是我的代码: -
/**
* Handle Facebook Sharing
*
* Take Decision for sharing approach.
*/
private void handleFacebookSharing()
{
//Show Hash Key
showHashKey(this);
//Can Present Share Dialog(Facebook Application is installed or not)
boolean canPresentShareDialog = FacebookDialog.canPresentShareDialog(getApplicationContext(), FacebookDialog.ShareDialogFeature.SHARE_DIALOG);
if (canPresentShareDialog)
{
//Publish the Post Using the Share Dialog
FacebookDialog.ShareDialogBuilder shareDialogBuilder = new FacebookDialog.ShareDialogBuilder(ShareActivity.this);
//Set Link
shareDialogBuilder.setLink(ShareActivity.this.getString(R.string.share_link));
//Set Caption
shareDialogBuilder.setCaption(getString(R.string.share_caption));
//Set Description
shareDialogBuilder.setDescription(getString(R.string.share_description));
//Get Facebook Dialog
FacebookDialog facebookDialog = shareDialogBuilder.build();
//Track Pending Dialog Call
uiHelper.trackPendingDialogCall(facebookDialog.present());
}
else
{
if(activeSession == null || !activeSession.isOpened())
{
//Open Active Session
activeSession = Session.openActiveSession(this, true, statusCallback);
}
else
{
//Show Web Dialog
showWebDialog();
}
}
}
onActivityResult方法: -
uiHelper.onActivityResult(requestCode, resultCode, intent, new FacebookDialog.Callback()
{
@Override
public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data)
{
//Show Toast
UIUtil.showToast(R.string.toast_message_share_error_posting);
}
@Override
public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data)
{
//Show Toast
UIUtil.showToast(R.string.toast_message_share_success_post);
}
});
答案 0 :(得分:0)
伙计们花了很多时间找到解决方案后,我们可以使用此代码检查故事是否被取消或发布。
@Override
public void onComplete(PendingCall pendingCall, Bundle data)
{
//Get Native Dialog Did Complete
boolean didComplete = FacebookDialog.getNativeDialogDidComplete(data);
if(didComplete)
{
//Get Native Dialog Completion Gesture
String nativeDialogCompletionGesture = FacebookDialog.getNativeDialogCompletionGesture(data);
if (nativeDialogCompletionGesture == null || FacebookDialog.COMPLETION_GESTURE_CANCEL.equals(nativeDialogCompletionGesture))
{
//Show Publish Cancel Toast
UIUtil.showToast(R.string.toast_message_share_publish_cancelled);
}
else
{
//Show Success Post Toast
UIUtil.showToast(R.string.toast_message_share_success_post);
}
}
else
{
//Show Publish Cancel Toast
UIUtil.showToast(R.string.toast_message_share_publish_cancelled);
}
}
@Override
public void onError(PendingCall pendingCall, Exception error, Bundle data)
{
//Show Toast
UIUtil.showToast(R.string.toast_message_share_error_posting);
}