2014-12-20 7 views
2

나는 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

얘들 아 내가 해결책을 찾은 많은 시간을 보낸 이후, 우리는 그 이야기가 취소 또는 게시 확인하실 수 있습니다 이 코드를 사용하여

@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); 
    }