Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook MessageDialog回调不工作_Android_Facebook_Messenger - Fatal编程技术网

Android Facebook MessageDialog回调不工作

Android Facebook MessageDialog回调不工作,android,facebook,messenger,Android,Facebook,Messenger,我正在开发通过facebook Messenger应用程序向用户的facebook好友发送链接+内容的功能 首先,我使用facebook-android-sdk-4.3 并编写以下代码 callbackManager = CallbackManager.Factory.create(); messageDialog = new MessageDialog(this); messageDialog.registerCallback(callbackManager, new FacebookCal

我正在开发通过facebook Messenger应用程序向用户的facebook好友发送链接+内容的功能

首先,我使用facebook-android-sdk-4.3

并编写以下代码

callbackManager = CallbackManager.Factory.create();

messageDialog = new MessageDialog(this);
messageDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
    @Override
    public void onSuccess(Sharer.Result result) {
        Log.e(TAG, "send success")
    }

    @Override
    public void onCancel() {
        Log.e(TAG, "send cancel")
    }

    @Override
    public void onError(FacebookException e) {
        Log.e(TAG, "send error")
    }
});

if (MessageDialog.canShow(ShareLinkContent.class)) {

  ShareLinkContent linkContent = new ShareLinkContent.Builder()
          .setContentTitle("....")
          .setContentDescription(message)
          .setContentUrl(....)
          .setImageUrl(Uri.parse(.....))
          .build();

  messageDialog.show(linkContent);
}
最后,我运行应用程序,按send,打开send message dialog。 及

  • 我按send message,
    onSuccess
    called
  • 我按back键取消,也调用了成功时的
    onSuccess
    :((((
当用户按back键关闭send对话框时,如何捕获回调


谢谢!

我相信这与用于在订阅源上共享的ShareDialog发生的问题是相同的。当用户共享或取消该对话框时,我在成功时收到一个回调,并且postId始终为空!因此我无法区分这两个结果

经过一些研究,我发现了这一点。Facebook团队回答如下:

经过进一步的研究,发现这种行为是经过设计的。SDK对MessageDialog等对话框重用FacebookCallback类,但它使用onSuccess()方法来发出任何类型的对话框关闭信号。这意味着onSuccess()将在实际发送消息时调用,但也会在对话框未发送消息而被取消时调用

在我的例子中,这就是解决方案:用户必须在登录过程中授予
publish\u actions
权限,才能触发onSuccess和onCancel。此外,当帖子成功发布到Facebook时,还会返回帖子ID


我希望这能为您澄清问题。

谢谢您的建议。目前,ShareDialog在facebook android sdk 4.3版上运行良好。只有MessageDialog有此漏洞:(@NamLe是的,我试图授予我的应用权限,但MessageDialog仅在成功时作为回调触发。这仅适用于ShareDialog。MessageDialog仅适用于Messenger的本机应用?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  callbackManager.onActivityResult(requestCode, resultCode, data);
  super.onActivityResult(requestCode, resultCode, data);
}