Firebase注销未导致正确的活动

问题描述 投票:0回答:1

我试图将AlertDialog集成到我的应用中,客户可以通过该对话框注销。当我调出对话框时,它应该可以正常工作。但是,如果我按“注销”,则不会按要求将Iam转发到LoginActivity。相反,我的对话框只是关闭,然后重新加载HomeActivity。

我在这里做错了什么?问候和感谢!

    private void signOut() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Signout")
                .setMessage("Do you really want to sign out?")
                .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                }).setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                Common.selectedFood = null;
                Common.categorySelected = null;
                Common.currentUser = null;
                FirebaseAuth.getInstance().signOut();
                startActivity(new Intent(HomeActivity.this, LoginActivity.class));
                finish();

            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLACK);
        dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.BLACK);

    }

LoginActivity

public class LoginActivity extends AppCompatActivity {

    View view;

    private EditText Email;
    private EditText Password;
    private Button Anmelden;
    private TextView BenutzerRegistrierung;
    private TextView Spaeter;
    private FirebaseAuth firebaseAuth;
    private ProgressDialog progressDialog;
    private TextView Passwortzurücksetzen;
    private CheckBox chkBoxRememberMe;


    String email, password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        view = this.getWindow().getDecorView();

        view.setBackgroundResource(R.color.colorBlack);
        super.onCreate(savedInstanceState);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_login);


        Email = (EditText) findViewById(R.id.editTextEmail);
        Password = (EditText) findViewById(R.id.editTextPasswort);
        Anmelden = (Button) findViewById(R.id.buttonLogin);
        Passwortzurücksetzen = (TextView) findViewById(R.id.textViewPasswortzurück);
        BenutzerRegistrierung = (TextView) findViewById(R.id.textViewRegistrierung);
        Spaeter = (TextView) findViewById(R.id.textViewSpaeter);
        chkBoxRememberMe=(CheckBox)findViewById(R.id.checkBox);
        FirebaseApp.initializeApp(this);
        firebaseAuth = FirebaseAuth.getInstance();

        progressDialog = new ProgressDialog(this);


        SharedPreferences preferences=getSharedPreferences("checkbox",MODE_PRIVATE);
        String checkbox = preferences.getString("remember","");

        if(checkbox.equals("true")){
            Intent intent =new Intent(LoginActivity.this,HomeActivity.class);
            startActivity(intent);
        }else if(checkbox.equals("true")){
            Toast.makeText(this,"Bitte anmleden",Toast.LENGTH_SHORT).show();
        }

        if (firebaseAuth.getCurrentUser()!=null) {
            finish();
            startActivity(new Intent(LoginActivity.this, PasswordActivity.class));
        }
        Anmelden.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                password = Password.getText().toString();
                email = Email.getText().toString();
                if (email.isEmpty() || password.isEmpty()) {
                    Toast.makeText(LoginActivity.this, "Bitte geben Sie ihre Anmeldedaten ein", Toast.LENGTH_LONG).show();
                } else {
                    prüfen(Email.getText().toString(), Password.getText().toString());
                }
            }
        });

        BenutzerRegistrierung.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, RegistrationActivity.class));
            }
        });

        Passwortzurücksetzen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, PasswordActivity.class));
            }
        });

        Spaeter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, HomeActivity.class));
            }
        });


        chkBoxRememberMe.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(compoundButton.isChecked()){

                    SharedPreferences preferences=getSharedPreferences("checkbox",MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putString("remember","true");
                    editor.apply();
                    Toast.makeText(LoginActivity.this, "Checked",Toast.LENGTH_SHORT).show();
                }else if (!compoundButton.isChecked()){

                    SharedPreferences preferences=getSharedPreferences("checkbox",MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putString("remember","false");
                    editor.apply();
                    Toast.makeText(LoginActivity.this, "Unchecked",Toast.LENGTH_SHORT).show();

                }
            }
        });
    }

    private void prüfen(String userEmail, String userPassword) {
        progressDialog.setMessage("Nachricht Ladezeit");
        progressDialog.show();

        firebaseAuth.signInWithEmailAndPassword(userEmail, userPassword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    progressDialog.dismiss();
                    EmailVerifikation();
                } else {
                    Toast.makeText(LoginActivity.this, "Anmeldung Fehlgeschlagen", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    private void EmailVerifikation() {
        FirebaseUser firebaseUser = firebaseAuth.getInstance().getCurrentUser();
        Boolean emailflag = firebaseUser.isEmailVerified();
        if (emailflag) {

            if(firebaseAuth.getCurrentUser()!=null) {
                final FirebaseDatabase database =FirebaseDatabase.getInstance();
                DatabaseReference myref=database.getReference("Users").child(firebaseAuth.getUid());
                myref.addValueEventListener(new ValueEventListener() {

                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        UserModel userModel=  dataSnapshot.getValue(UserModel.class);
                        currentUser=userModel;
                        startActivity(new Intent(LoginActivity.this, HomeActivity.class));
                        finish();
                    }
                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        Toast.makeText(LoginActivity.this, ""+databaseError.getCode(), Toast.LENGTH_SHORT).show();
                    }
                });
            }
        } else {
            Toast.makeText(this, "Verifiziere bitte zuerst deine Email-Adresse", Toast.LENGTH_SHORT).show();
            firebaseAuth.signOut();
        }
    }

}
java android android-intent firebase-authentication android-alertdialog
1个回答
0
投票

我将以下代码添加到我的LoginActivity OnCreate中;

        listener = firebaseAuth -> {
            Dexter.withActivity(this)
                    .withPermissions(
                            Arrays.asList(
                                    Manifest.permission.ACCESS_FINE_LOCATION,
                                    Manifest.permission.READ_EXTERNAL_STORAGE,
                                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                    Manifest.permission.CAMERA)
                    )
                    .withListener(new MultiplePermissionsListener() {
                        @Override
                        public void onPermissionsChecked(MultiplePermissionsReport report) {
                            if(report.areAllPermissionsGranted())
                            {
                                FirebaseUser user = firebaseAuth.getCurrentUser();
                                if (user != null) {

                                } else {

                                }
                            }
                            else
                                Toast.makeText(LoginActivity.this, "You must accept all permissions", Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {

                        }
                    }).check();
        };

© www.soinside.com 2019 - 2024. All rights reserved.