Android - facebook sdk 问题

标签 android facebook android-facebook

我在我的应用程序中包含了 Fb 登录,当我单击“登录”按钮 (com.facebook.widget.LoginButton) 时,它会在登录前打开一个带有对话框的额外 Activity ,如下图所示。为什么会这样?我不想在登录前打开这个额外的 Activity 。知道怎么做吗?

enter image description here

enter image description here

我的主要 Activity :

public class MainActivity extends SherlockFragmentActivity {

    //Button fblogin;
    Button signup_with_email;
    Button log_in;
    private UiLifecycleHelper uiHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        uiHelper = new UiLifecycleHelper(this, null);
        uiHelper.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initialize();
        setListeners();

    }

    private void initialize() {
        //fblogin = (Button) findViewById(R.id.login_button);
        signup_with_email = (Button) findViewById(R.id.signup_with_email);
        log_in = (Button) findViewById(R.id.log_in);
    }

    private void setListeners() {

        /*fblogin.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

            }
        });
*/
        signup_with_email.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                startActivity(new Intent(MainActivity.this,
                        EmailSignUpActivity.class));
            }
        });

        log_in.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, LoginActivity.class));
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        uiHelper.onResume();

    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        uiHelper.onActivityResult(requestCode, resultCode, data);
        startActivity(new Intent(MainActivity.this, DashBoardActivity.class));
    }

    @Override
    public void onPause() {
        super.onPause();
        uiHelper.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        uiHelper.onDestroy();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

最佳答案

我来晚了一点,但接受的答案是错误的。

在深入研究 SDK 代码后,我发现了以下内容:Facebook 启动 com.facebook.LoginActivity 用于登录过程,由于您没有指定自定义主题,它将显示在您的屏幕截图中。这是 LoginActivity 的 JavaDoc:

This Activity is a necessary part of the overall Facebook login process but is not meant to be used directly. Add this activity to your AndroidManifest.xml to ensure proper handling of Facebook login.

他们建议使用 Theme.Translucent.NoTitleBar:

<activity android:name="com.facebook.LoginActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:label="@string/app_name" />   

但是,如果您使用建议的主题,Activity 将是半透明的,但仍会在中间显示不确定的 ProgressBar(动画加载符号)。

就个人而言,我更喜欢使用 DialogFragment 来指示加载过程并且根本不显示 Facebook 的 LoginActivity:

<activity
    android:name="com.facebook.LoginActivity" 
    android:theme="@android:style/Theme.NoDisplay" />

关于Android - facebook sdk 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15984855/

相关文章:

ios - 如何在适用于 iOS 的 Facebook SDK 中定义 "GeoPoint"属性

安卓图表: achartengine or AndroidPlot?

java - 键盘挤压 ScrollView

android - 您必须使用 ParseObject.create() 或适当的子类创建这种类型的 ParseObject。 - 应用程序崩溃但代码正确

javascript - Facebook 的 react.js——对象不是函数

ios - 有多少人因为 Facebook 广告而安装了我的应用程序?

android - 自定义 Android Facebook 登录按钮

android - Facebook 在 Android 设备上登录不工作,但在 Android Studio Emulator 中工作

android - Session.isOpened() == true 但 Session.getAccessToken() == ""

android - API 级别 28 的编译错误