首页 > 解决方案 > 当用户创建帐户时,它会进入家庭活动而不是登录活动,如何避免这种情况?

问题描述

当用户单击创建帐户时,任务完成后它应该转到登录活动,但相反,它直接将其带到家庭活动(不要求登录凭据)。

我写在登录活动的意图名称中(在创建帐户按钮中)

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

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

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
            }
        });
    }

标签: javaandroidfirebasefirebase-authentication

解决方案


根据文件

如果创建了新帐户,则用户也已登录。在回调中,您可以使用 getCurrentUser 方法获取用户的帐户数据。

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


推荐阅读