有时(不是非常频繁)我的
Android应用程序在首次使用Facebook登录(Facebook SDK版本3.5)登录到Facebook后崩溃.
我得到例外:
java.lang.RuntimeException: Unable to resume activity {my.app.package/com.facebook.LoginActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,request=64206,result=0,data=null} to activity {my.app.package/com.facebook.LoginActivity}: java.lang.NullPointerException
有两个不同的根例外:
有时用:
java.lang.NullPointerException at com.facebook.AuthorizationClient.startOrContinueAuth(AuthorizationClient.java:135)
而有时:
Caused by: java.lang.NullPointerException at com.facebook.AuthorizationClient.logAuthorizationMethodComplete(AuthorizationClient.java:519)
在大多数情况下,我的应用程序运行正常
什么想法可能导致这个问题?
编辑:
我的facebook sdk conf in manifest:
<activity android:name="com.facebook.LoginActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" />
活动代码:
public class MainActivity extends FragmentActivity { .... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initSession(savedInstanceState); ... } private void initSession(Bundle savedInstanceState) { Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); Session session = Session.getActiveSession(); if (session == null) { if (savedInstanceState != null) { session = Session.restoreSession(this,null,statusCallback,savedInstanceState); } if (session == null) { session = new Session(this); } Session.setActiveSession(session); if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); } } } @Override public void onStart() { super.onStart(); Session session = Session.getActiveSession(); if (session != null) { session.addCallback(statusCallback); } } @Override public void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); Session session = Session.getActiveSession(); if (session != null) { session.onActivityResult(this,requestCode,data); } } @Override public void onStop() { super.onStop(); Session session = Session.getActiveSession(); if (session != null) { session.removeCallback(statusCallback); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Session session = Session.getActiveSession(); Session.saveSession(session,outState); } ...
}
我也在以前版本的Facebook SDK中遇到此错误.我有最新的Fb android客户端.有帮助吗?
解决方法
Facebook刚刚发布了他们的Android SDK v3.5.1,解决了您的问题.他们的
Change Log没有提供有关出错的大量信息,但是人们一直在报告这个错误,他们确实说它将在
(source)的更高版本中修复.但无论如何,看看v3.5和v3.5.1之间的差异他们似乎在第135和519行附近有固定代码.查看完整列表中的
Change Log.可能一个好主意永远不会从Facebook升级到重要版本,直到他们发布他们的第一个补丁.