有没有办法在给定条件下用特定活动初始化应用程序?

时间:2019-12-08 07:23:30

标签: android firebase firebase-authentication

我正在一个项目中,其中有一个登录屏幕,要求用户输入电子邮件和密码。如果登录凭据正确,则该应用将打开欢迎活动。问题是单击后退按钮后,应用程序会将其带回登录屏幕,要求再次登录。点击返回按钮时,我希望它退出应用程序。有办法吗?

此外,我希望在用户登录时,该应用程序直接从欢迎屏幕而不是登录屏幕启动。我正在使用Firebase来存储用户的信息。

btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String email= editText.getText().toString();
            String pwd = editText2.getText().toString();

            if(email.isEmpty()){
                editText.setError("Please enter your email id");
                editText.requestFocus();
            }
            else if(pwd.isEmpty()){
                editText2.setError("Please enter your password");
                editText2.requestFocus();
            }
            else{
                    progressBar.setVisibility(View.VISIBLE);
                    mfirebaseAuth.signInWithEmailAndPassword(editText.getText().toString(), editText2.getText().toString()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if (task.isSuccessful() && mfirebaseAuth.getCurrentUser().isEmailVerified()) {
                                Intent int31 = new Intent(MainActivity.this,welcome.class);
                                int31.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                int31.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                startActivity(int31);
                                progressBar.setVisibility(View.INVISIBLE);
                                editText.setText("");
                                editText2.setText("");
                            } else if (task.isSuccessful() && !(mfirebaseAuth.getCurrentUser().isEmailVerified())){

                                Toast.makeText(MainActivity.this,"Please verify your email address and try again!",Toast.LENGTH_SHORT).show();
                                editText.setText("");
                                editText2.setText("");
                                progressBar.setVisibility(View.INVISIBLE);

                            }
                            else{
                                Toast.makeText(MainActivity.this,task.getException().getMessage(),Toast.LENGTH_SHORT).show();
                                editText.setText("");
                                editText2.setText("");
                                progressBar.setVisibility(View.INVISIBLE);
                            }
                        }
                    });

上面的代码是每次都会打开的初始屏幕,与用户是否登录无关。

2 个答案:

答案 0 :(得分:1)

您必须按如下所示开始新活动后致电完成

Intent int31 = new Intent(MainActivity.this,welcome.class);
int31.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
int31.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(int31);
progressBar.setVisibility(View.INVISIBLE);
editText.setText("");
editText2.setText("");
finish();

答案 1 :(得分:0)

使用方式如下

 Intent int31 = new Intent(MainActivity.this,welcome.class);
 int31.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 startActivity(int31);