当我的应用程序被破坏时,firebase不会存储我的用户,并且会跳过登录页面

时间:2019-02-12 03:58:41

标签: android firebase firebase-authentication

当我启动我的应用程序时,第一页是登录名,在我成功登录后,新的意图将我带到用户名旁边的主菜单。当我直接销毁应用程序时,用户名应存储在主菜单中,但它将删除用户名,并且为空。特此附上我的登录代码。

private EditText PasswdEdit;
private EditText EmailEdit;

private Button LoginBtn;

private FirebaseAuth mAuth;

private FirebaseAuth.AuthStateListener mAuthStateListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_log_in);

    mAuth = FirebaseAuth.getInstance();

    PasswdEdit = findViewById(R.id.PasswdEdit);
    EmailEdit = findViewById(R.id.EmailEdit);
    LoginBtn = findViewById(R.id.LoginBtn);

    mAuthStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            if (firebaseAuth.getCurrentUser() != null)
            {
                startActivity(new Intent(LogIn.this,MainMenu.class).putExtra("UserName",EmailEdit.getText().toString()));

            }
        }
    };
    LoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startSingIn();
        }
    });

}

@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthStateListener);
}

@Override
public void onBackPressed() {

}

private void startSingIn (){
    String email = EmailEdit.getText().toString();
    String passwd = PasswdEdit.getText().toString ();
    if(TextUtils.isEmpty(email) || TextUtils.isEmpty(passwd))
    {
        Toast.makeText(LogIn.this,"Fields are empty",Toast.LENGTH_LONG).show ();
    }
    else
    {
        mAuth.signInWithEmailAndPassword(email,passwd).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(!task.isSuccessful()){
                    Toast.makeText(LogIn.this,"Please check your credentials",Toast.LENGTH_LONG).show ();
                }
                if (task.isSuccessful()) {
                    FirebaseUser userLogIn = mAuth.getCurrentUser();
                }
            }
        });

    }

}

1 个答案:

答案 0 :(得分:0)

用户仍处于存储状态,但是我之前所做的是我从编辑框中提取了用户名,因此当应用程序被销毁并重新启动时,编辑框为空,因为该页面被跳过了。

在这里,我已附加了代码来克服此问题。

 if (firebaseAuth.getCurrentUser() != null)
            {
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                startActivity(new Intent(LogIn.this,MainMenu.class).putExtra("UserName",user.getEmail()));

            }
            if (firebaseAuth.getCurrentUser() == null)
            {

            }