java - 当用户创建帐户时,它会进入主页 Activity 而不是登录 Activity ,如何避免这种情况?

标签 java android firebase firebase-authentication

当用户单击创建帐户时,完成任务后,它应该转到登录 Activity ,但它会直接将其带到主页 Activity (不要求登录凭据)。

我在登录 Activity 的 Intent 名称中写入(在创建帐户按钮中)

(如果需要该信息,我还编写了检查用户是否登录或未登录的代码)

以下是创建帐户按钮中的代码:

cma.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                //getting the data
                username= nun.getText().toString().trim();
                status= sta.getText().toString().trim();
                emailid= ei.getText().toString().trim();
                courses= cou.getText().toString().trim();
                year = yr.getSelectedItem().toString();
                dateofbirth= dob.getText().toString().trim();
                collegeid= cid.getText().toString().trim();
                password= pw1.getText().toString().trim();
                cpass= pw2.getText().toString().trim();
                int selectedId = gender.getCheckedRadioButtonId();
                sexgender = (RadioButton) findViewById(selectedId);
                final String gender = sexgender.getText().toString().trim();

                if (circularImageView.getDrawable() != null) {
                    cma.setText("Creating Fresh Account....");
                    createAccProgress.setVisibility(View.VISIBLE);
                    //get image from imageview
                    Bitmap bitmap = ((BitmapDrawable) circularImageView.getDrawable()).getBitmap();
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    //image compress
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
                    data = baos.toByteArray();
                    String filePathAndName="ProfilePictures/"+"profile_"+ emailid;

                    StorageReference ref = FirebaseStorage.getInstance().getReference().child(filePathAndName);
                    ref.putBytes(data)
                            //ERROR on Line Below
                            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                @Override
                                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                    //Success to firebase storage
                                    Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
                                    while (!uriTask.isSuccessful());
                                    downloadUri = uriTask.getResult().toString();

                                    if (uriTask.isSuccessful()) {
                                        mauth.createUserWithEmailAndPassword(emailid,cpass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                                            @Override
                                            public void onComplete(@NonNull Task<AuthResult> task){
                                                if(task.isSuccessful()) {
                                                    //Custom Field save code
                                                    Student info = new Student(username,status,emailid,year,courses,gender,dateofbirth,collegeid,downloadUri);
                                                    reference.child(username).setValue(info).addOnCompleteListener(new OnCompleteListener<Void>() {
                                                        @Override
                                                        public void onComplete(@NonNull Task<Void> task){
                                                            createAccProgress.setVisibility(View.GONE);
                                                            if(task.isSuccessful()) {
                                                                Toast.makeText(Sign_up.this,"Account successfully Created !", Toast.LENGTH_LONG).show();
                                                                Intent i = new Intent(Sign_up.this, LogIn.class);
                                                                startActivity(i);
                                                            } else{
                                                                String errorMessage = task.getException().getMessage();
                                                                Toast.makeText(Sign_up.this, "Error: " + errorMessage, Toast.LENGTH_LONG).show();
                                                            }
                                                        }
                                                    });
                                                    //End custom field
                                                } else{
                                                    Toast.makeText(Sign_up.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                                                }
                                                //Authentication Stuff
                                            }
                                        });
                                    }

                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Toast.makeText(Sign_up.this, "Failed Uploading image", Toast.LENGTH_SHORT).show();
                                }
                            });

                }
                else { }
                //Button Brackets
            }
        });
    }

最佳答案

根据documentation :

If the new account was created, the user is also signed in. In the callback, you can use the getCurrentUser method to get the user's account data.

因此,当您在成功创建帐户后在登录 Activity 中检查用户是否登录时,它会找到已登录的用户并继续进入主页 Activity 。

关于java - 当用户创建帐户时,它会进入主页 Activity 而不是登录 Activity ,如何避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168876/

相关文章:

android - 如何在textview上隐藏背景图片

javascript - 如何使用 Firebase 上传多个文件?

java - 碰撞 2 个矩形不起作用(边界框方法)

java - 无法执行目标 org.codehous.mojo :exec-maven-plugin:1. 4.0:java

android - Android 中的自定义安装

android - android手机可以用作生物识别指纹设备吗

firebase - 允许用户只访问他们自己在 Firebase 数据库中的数据?

javascript - 使用异步在 firebase.auth() 中捕获错误后获取 'Uncaught'

java - 为什么 Dijkstra 算法对于给定的图不能正常工作?

java - 序列化在构造函数中初始化的映射