微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安卓 – 第一次Facebook登录后应用程序崩溃

有时(不是非常频繁)我的 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升级到重要版本,直到他们发布他们的第一个补丁.

原文地址:https://www.jb51.cc/android/314709.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐