Facebook与Android应用程序集成

时间:2014-12-20 14:02:41

标签: android facebook-sdk-3.0

我正在整合facebook sdk 3.21.1,一切顺利,但只有一个问题。 当我点击分享按钮时,它会提示我一个对话框(如果是FacebookDialog.ShareDialogBu​​ilder)用于发布内容。如果按下后退按钮,则会调用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);
        }
    });

1 个答案:

答案 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);
    }