Facebook对话框和后退按钮

Facebook对话框和后退按钮,facebook,dialog,back-button,facebook-android-sdk,Facebook,Dialog,Back Button,Facebook Android Sdk,当使用facebook android sdk打开对话框时,一切正常 但是,如果用户单击“上一步”按钮,则对话框确实会关闭,但不会调用对话框侦听器的onCancel方法(或任何其他方法) 我搜索了这件事,在github上从fb android sdk找到了这个拉取请求: 我取了一个零件,对其进行了一些修改,以获得以下结果: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == Ke

当使用facebook android sdk打开对话框时,一切正常

但是,如果用户单击“上一步”按钮,则对话框确实会关闭,但不会调用对话框侦听器的onCancel方法(或任何其他方法)

我搜索了这件事,在github上从fb android sdk找到了这个拉取请求:

我取了一个零件,对其进行了一些修改,以获得以下结果:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
        mWebView.stopLoading();
        dismiss();
        mListener.onCancel();
        return true;
    }

    return true;
}
我将它添加到FbDialog类中,这似乎确实起到了作用

我想知道的是为什么这不是sdk的一部分? 这个请求已经有一年多的历史了,最后一个响应大约有11个月了。 为什么不将其添加到sdk源代码中

因为这个解决方案正在运行,所以并不紧急,但我不想修改facebook sdk的源代码,因为它可能会在以后出现问题(如果/当它们更新时)


有什么想法吗?

当back按钮没有导致DialogListener上启动cancel方法时,您的SDK可能有一个bug

请在此处查看修复程序:

应用后,您可以在类中实现它,如下所示:




您应该修改FbDialog类。 添加此行以设置使用后退键不可取消的对话框:

setCancelable(false);
或添加以下行以处理后退键单击:

@Override
public void onBackPressed() {
    mWebView.stopLoading();
    dismiss();
    mListener.onCancel();
}

谢谢你的回答。老实说,我已经有一段时间没有检查过这个问题了,但是你为什么建议我使用
Facebook.FORCE\u DIALOG\u AUTH
?为了获得更好的用户体验,最好使用
SSO
。如果我没记错的话,主要原因是非SSO使用一个更好的弹出对话框来显示身份验证面板,而SSO面板从右侧滑入(并在用户完成后从右侧滑出)。至少在不直接破解SDK代码的情况下,似乎没有办法更改此UI。另一个原因是应用程序要求之一是不使用已安装的Facebook客户端。感谢您的回复,我无法真正测试它,因为此代码已不再使用。。而且,这仍然需要修改fb源代码。@NitzanTomer显然是facebook放弃了这个项目,因为目前有33个打开的pull请求,甚至是同一个bug的副本。我删除了fb代码上的可取消项,效果非常好!
setCancelable(false);
@Override
public void onBackPressed() {
    mWebView.stopLoading();
    dismiss();
    mListener.onCancel();
}