2014-12-20 8 views
2

Я интегрирую facebook sdk 3.21.1, все идет хорошо, но есть только одна проблема. Когда я нажимаю на кнопку совместного доступа, он подскажет мне диалог (в случае с FacebookDialog.ShareDialogBuilder) для публикации чего-либо. Если я нажму кнопку «Назад», то onCompleteMethod из com.facebook.widget.WebDialog.OnCompleteListener вызывается, и я не могу получить событие, либо он успешно отправлен, либо нажал кнопку «Назад». Потому что я хочу показать точное тост-сообщение пользователю.Facebook Интеграция с Android-приложением

Это мой код: -

/** 
* 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); 
    } 
Смежные вопросы