Android Facebook sdk无法正常处理设备轮换?

时间:2011-06-18 09:16:03

标签: android facebook

我想使用Facebook SSO服务对我的用户进行身份验证。我设法使用官方的Android Facebook sdk处理基本登录,这非常轻松,但似乎sdk无法处理设备轮换 - 至少我找不到让它正常工作的方法。

验证码:

loginButtonFacebook.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do FB login
                facebook.authorize(LoginActivity.this, new DialogListener() {
                    @Override
                    public void onComplete(Bundle values) {
                        Toast.makeText(LoginActivity.this, "Facebook login successful", Toast.LENGTH_SHORT).show();

                        Log.d(TAG, "FACEBOOK LOGIN SUCCESSFUL");
                        //loginFB(facebook.getAccessToken());
                    }

                    @Override
                    public void onFacebookError(FacebookError error) {
                        Toast.makeText(LoginActivity.this, "FacebookError:" +error.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onError(DialogError e) {
                        Toast.makeText(LoginActivity.this, "Error: "+e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onCancel() {
                        Toast.makeText(LoginActivity.this, "Cancelled!", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });

我的活动还需要处理FB登录活动的结果:

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }

这样可行,但facebook.authorize(...)方法需要我当前Activity的引用,因此它可以稍后进行回调。但是,如果在用户处于facebook授权活动时旋转设备,则我之前的活动将被销毁。因此,在用户授权我的应用程序之后,我没有得到关于此的回调。

有没有人为此找到解决方案?

由于

2 个答案:

答案 0 :(得分:1)

在您的活动名称下的清单文件中,只需添加以下行

android:configChanges="orientation"
在您的活动中

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
    ................
}

参考herehere

答案 1 :(得分:1)

我通常讨厌推荐这个,但Facebook使用的Activity可以锁定为肖像而不会产生任何负面影响。它所做的只是显示一个不确定的ProgressBar

检查清单中是否有名为com.facebook.LoginActivity的活动,并确保其具有以下属性:

<activity
    android:configChanges="keyboardHidden"
    android:name="com.facebook.LoginActivity"
    android:screenOrientation="portrait" />