【问题标题】:the back button does not work in firebase ui Android后退按钮在 Firebase ui Android 中不起作用
【发布时间】:2020-08-22 18:19:57
【问题描述】:

我正在使用 firebase ui 登录和注册用户,我的应用程序以 firebase ui 启动,当我按下后退按钮时,每次按下后退按钮时,firebase 身份验证 UI 都会重新启动。 如何按返回按钮结束活动

这是我的代码的一部分

 @Override
protected void onStart() {
    super.onStart();
    auth.addAuthStateListener(listener);

}

@Override
protected void onStop() {
    if (listener != null)
     auth.removeAuthStateListener(listener);
    disposable.clear();
    super.onStop();
}
 private void Init() {
    //Init Firebase
    auth = FirebaseAuth.getInstance();
    db = FirebaseDatabase.getInstance();
    users = db.getReference(Common.user_rider_tbl);



    providers = Arrays.asList(new AuthUI.IdpConfig.PhoneBuilder().build(),
            new AuthUI.IdpConfig.EmailBuilder().build(),
            new AuthUI.IdpConfig.GoogleBuilder().build(),
            new AuthUI.IdpConfig.FacebookBuilder().build());



    listener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();

            if (user != null) {
                //Account is already logged in
                CheckUserFromFirebase(user);
            } else {
                SignWithPhone();
            }
        }
    };
}

private void SignWithPhone() {

    startActivityForResult(
            AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setTheme(R.style.LoginTheme)
                    .setIsSmartLockEnabled(false)
                    .setLogo(R.drawable.logo)

                    .setAvailableProviders(providers)
                    .build(),
            APP_REQUEST_CODE);
}

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


    if (requestCode == APP_REQUEST_CODE) {
        IdpResponse response = IdpResponse.fromResultIntent(data);
       providerType = response.getProviderType();

        if (resultCode == RESULT_OK) {

            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();


        } else {
            if (response == null) {
                // User pressed back button. NOTE: This is where the back action is
                //taken care of

              finish();

            }

            if (Objects.requireNonNull(response.getError()).getErrorCode() == ErrorCodes.NO_NETWORK) {
                //Show No Internet Notification
                return;
            }
            if (response.getError().getErrorCode() == ErrorCodes.UNKNOWN_ERROR)
            {
                Log.i(TAG, "EEERRROORRRR: "+ response.getError().getErrorCode());
               return;
            }


            Log.i(TAG, "EEERRROORRRR: "+ response.getError().getErrorCode());


        }
    }
}

请帮帮我

【问题讨论】:

  • 如果您遇到问题,最好在发布问题时创建MCVE。您为此问题发布了近 300 行代码。人们要解析和尝试在线调试的内容很多。请编辑您的问题并隔离问题,这样可以增加获得帮助的机会。
  • 好的,谢谢 :) 我会去做的

标签: android firebase firebase-authentication firebaseui


【解决方案1】:

把认证调用函数放在onCreate()里面而不是onStart()里面。

【讨论】:

    猜你喜欢
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多