在Facebook SDK上发布后显示alertbox

时间:2018-03-15 04:01:31

标签: android facebook-android-sdk facebook-sdk-4.x

我正在使用Facebook Android SDK 4. +通过点击我的应用程序中的按钮来分享照片。

当用户点击该按钮时,它将打开Facebook共享照片页面。发布照片后,我想显示警告框,告诉照片已成功发布。

我一直在使用这个

SharePhoto photo = new SharePhoto.Builder()
            .setBitmap(bitmap)
            .build();
    SharePhotoContent content = new SharePhotoContent.Builder()
            .addPhoto(photo)
            .setShareHashtag(new ShareHashtag.Builder()
                    .setHashtag(hastag).build())
            .build();

    ShareDialog.show(SellingActivity.this,content);

在sharedialog.show之后放置alertbox似乎不起作用。它会在点击按钮后显示,然后Facebook分享照片页面会显示在那之后。

1 个答案:

答案 0 :(得分:1)

如果您使用此共享ShareDialog.show(SellingActivity.this,content);的方法,则不会有任何回拨。看那里的文件 -

/**
 * Helper to show the provided {@link com.facebook.share.model.ShareContent} using the provided
 * Fragment. No callback will be invoked.
 *
 * @param fragment android.support.v4.app.Fragment to use to share the provided content
 * @param shareContent Content to share
 */
public static void show(
        final Fragment fragment,
        final ShareContent shareContent) {
    show(new FragmentWrapper(fragment), shareContent);
}

如果你想要回调,那么我们必须使用CallbackManager,我们需要注册Callback。

总结以下是您需要做的事情 -

  1. 创建CallbackManager

    CallbackManager callbackManager = CallbackManager.Factory.create();

  2. 创建ShareDialog

    ShareDialog shareDialog = new ShareDialog(活动或片段);

  3. 注册回拨

  4. shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
                @Override
                public void onSuccess(Sharer.Result result) {
    
                }
    
                @Override
                public void onCancel() {
    
                }
    
                @Override
                public void onError(FacebookException error) {
    
                }
            });
    
    1. 覆盖onActivityResult
    2.   

      @覆盖   public void onActivityResult(int requestCode,int resultCode,Intent data {   super.onActivityResult(requestCode,resultCode,data); callbackManager.onActivityResult(requestCode,resultCode,data);   }