首次登录Facebook后应用程序崩溃

Mic*_*l W 7 android facebook facebook-graph-api facebook-authentication facebook-android-sdk

有时(不是非常频繁)我的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
Run Code Online (Sandbox Code Playgroud)

有两个不同的根例外:

有时用:

java.lang.NullPointerException at com.facebook.AuthorizationClient.startOrContinueAuth(AuthorizationClient.java:135)
Run Code Online (Sandbox Code Playgroud)

而有时:

Caused by: java.lang.NullPointerException at com.facebook.AuthorizationClient.logAuthorizationMethodComplete(AuthorizationClient.java:519)
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我的应用程序运行正常

什么想法可能会导致这个问题?

编辑:

我的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" />
Run Code Online (Sandbox Code Playgroud)

活动代码:

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, resultCode, 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);
}

...
Run Code Online (Sandbox Code Playgroud)

}

我也在以前版本的Facebook SDK中遇到此错误.我有最新的Fb android客户端.有帮助吗?

Rah*_*ani 4

Facebook 昨天刚刚发布了 Android SDK v3.5.1,可以解决您的问题。他们的更改日志没有提供太多有关问题所在的信息,但人们一直在报告此错误,并且他们确实表示它将在更高版本中修复(来源)。但无论如何,看看 v3.5 和 v3.5.1 之间的差异,他们似乎在第 135 行和第 519 行附近修复了代码。查看更改日志完整列表。在 Facebook 发布第一个补丁之前,永远不要升级到 Facebook 的重要版本,这可能是个好主意。