0

我正在使用firebase的密码验证。我已使用firebase注册了我的应用程序并启用了电子邮件/密码身份验证。在我的MainActivity中,我有注册和登录按钮,它将打开注册和登录活动。如果有成功注册/登录,我将用户重定向到ImageActivity。到此为止它工作正常。当用户在ImageActivity中时,如果他/她按下返回按钮,应用程序应该关闭,但是我被带到登录/注册活动。我已经在登录/注册活动的onCreate中编写了以下代码。检查用户是否使用Firebase中的密码验证登录

auth = FirebaseAuth.getInstance(); 

     if (auth.getCurrentUser() != null) { 
      startActivity(new Intent(LoginActivity.this, ImageActivity.class)); 
      finish(); 
     } 

我在MainActivityonCreate也写了这个代码。 请帮助

回答

2

为了避免这个问题,你可以做几件事情

首先:当你开始ImageActivity清除后退堆栈,你应该声明图片活动作为一个新的任务。要做到这一点,你应该在LoginActivity或SignupActivity

auth = FirebaseAuth.getInstance(); 

    if (auth.getCurrentUser() != null) { 
     Intent intent = new Intent(LoginActivity.this, ImageActivity.class); // Change LoginActivity to SignupActivity if you are calling ImageActivity from SignupActivity 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     finish(); 
    } 

写下面的代码如果从MainActivity开始注册/ LoginActivity,确保 你这样做,当你从 MainActivity开始LoginActivity和SignupActivity相同。

这样做后,你的ImageActivity类上实现onBackPressed。并在onBackPressed中调用finish()。代码如下

@Override 
public void onBackPressed() { 
    finish(); 
} 

这样做后,我希望你的问题将得到解决。

+0

我刚刚添加这一行intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); It works.Thanks alot – Pritish

+0

我很乐意帮助你! –

0

检查

mAuth.signInWithEmailAndPassword(email, password) 
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()) { 
       // Sign in success, update UI with the signed-in user's information 
       Log.d(TAG, "signInWithEmail:success"); 
       FirebaseUser user = mAuth.getCurrentUser(); 
       updateUI(user); 
      } else { 
       // If sign in fails, display a message to the user. 
       Log.w(TAG, "signInWithEmail:failure", task.getException()); 
       Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", 
         Toast.LENGTH_SHORT).show(); 
       updateUI(null); 
      } 

      // ... 
     } 
    }); 
+0

参考:https://firebase.google.com/docs/auth/android/password-auth –

+0

auth.signInWithEmailAndPassword(电子邮件,密码).addOnCompleteListener(LoginActivity.this,新OnCompleteListener (){@覆盖 public void onComplete(@NonNull Task task){ progressBar.setVisibility(View.GONE); if(!task.isSuccessful()){ if(password.length()<6){inputPassword.setError(getString( (Intent(LoginActivity.this,ImageActivity.class));} else {Toast.makeText(LoginActivity.this,“fail”,Toast.LENGTH_LONG).show();}} else {Intent intent = new Intent(LoginActivity.this,ImageActivity.class) ; startActivityForResult(意向,1);结束();}}}); – Pritish

+0

你必须检查** password.length()**之前设置为** auth.signInWithEmailAndPassword(电子邮件,密码)** –