安卓Facebook SDK - authorizeCallback()的问题

3

我有一个安卓应用程序,除了其他功能外,还可以在Facebook上发布更新。

我按照这个示例创建了我的代码,它完美地工作。我代码中唯一的区别是,我还扩展了官方Facebook SDK for Android页面上提到的onActivityResult。

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebookClient.authorizeCallback(requestCode, resultCode, data);
}

有时,我在onActivityResult()方法中调用"facebook.authorizeCallback()"时会遇到空指针异常。
我自己的手机和模拟器上从未出现此问题,但我不断接收到用户崩溃报告,大部分来自Droid和T-Mobile myTouch 3G手机。我已经尝试了很多办法,但无法重现这个问题。有人知道可能出了什么问题吗?

这可能是因为通过调用回调函数重新启动应用程序时,会创建一个新的 Activity 实例。然而,facebookClient 仅在 onClick() 中实例化。 - ldx
如果是这样的话,那我每次尝试发布到Facebook上都会遇到这个问题,不是吗?然而,这个问题发生的概率少于1%。 - Abhinav Manchanda
你最终解决了这个问题吗?我也遇到了同样的问题:在我的手机/模拟器上可以运行,但在其他手机上崩溃(特别是Moto Droids)。 - Nelson Monterroso
不,我不是。我在某个地方读到,这是一个特定版本的Droid存在的问题。现在我在我的应用程序描述中明确提到,FB发布可能无法与包括Droid在内的一些手机配合使用,并且我还放置了一个try catch块,显示屏幕上的错误消息,说明FB发布失败。如果您找到了问题的根本原因,请告诉我! - Abhinav Manchanda
显然,这是Droid普遍存在的问题,不仅仅是Facebook。https://groups.google.com/group/android-developers/browse_thread/thread/92d6f063682d2ca4/2c56e6e85c51e507?lnk=raot&hl=en&pli=1 - Abhinav Manchanda
3个回答

2

通过查看Facebook.java代码,似乎DialogListener被保留为类中的私有参数...当调用authorizeCallback()时,您假设DialogListener存在且不为空。但是,如果您的手机内存不足(像我的G1一样),当您调用autherizeCallback函数时,您的调用活动会被杀死以腾出内存供Facebook登录进程使用,这将擦除您的DialogListener,导致您得到空指针异常或忽略回调。这可能是您问题的原因。


1

我曾经遇到同样的问题,并通过将 Facebook.DialogListener.onComplete(Bundle values) 代码复制到 facebookClient.authorizeCallback(requestCode, resultCode, data) NPE 的 catch 中解决了它。

起初,我尝试在不调用 authorizeCallback 的情况下运行代码,但此时会话尚未建立。而 authorizeCallback 执行了所有必要的操作,只是未能调用监听器。因此,在 NPE catch 中复制监听器逻辑似乎解决了这个问题。


非常有趣。我自己的手机上从未能够重现这个问题,但是下次见到我的朋友时,让我在他的手机上试一试,然后再告诉你结果如何。感谢分享。 - Abhinav Manchanda

0

我有同样的问题,我的应用程序的一些用户报告了崩溃,最终,我已经能够系统地重现这个问题。 在Android 4中,有一个参数在“开发者选项”中,“不保留活动”。 如果你启用它,每次通过SSO使用你的应用程序进行登录时,你都会崩溃。 问题发生在Facebook.class的这一行:mAuthDialogListener.onComplete(data.getExtras()); 因为mAuthDialogListener为空。 这种复制问题的方法相当于Raanan提到的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接