在 android 中的身份验证期间,将用户个人资料图片上传到 firebase 时出错

Having error while uploading user profile image to firebase, during authentication in android

我使用 firebase 开发了身份验证,它运行良好,但我想添加一个额外的模块来添加用户配置文件图像。所以我首先编写了 2 个函数,用于在 firebase 实时数据库中使用电子邮件和密码进行用户注册,第二个用于上传用户个人资料图像...... 我只是在用户模型 class 中添加了 pimage 变量,但是我在用户模型对象的先前参数和 (uri.toString());

中出现错误

这是使用电子邮件和密码创建用户的代码

private void register_doctor () {
            String dname = et_name.getText().toString().trim();
            String demail = et_email.getText().toString().trim();
            String dpass = et_pass.getText().toString().trim();
            String dcpass = et_cnf_pass.getText().toString().trim();
            String dcontact = et_contact.getText().toString().trim();
            String dcity = et_city.getText().toString().trim();
            String dage = et_age.getText().toString().trim();


            if (dname.isEmpty()) {
                et_name.setError("Full Name is Required");
                et_name.requestFocus();
                return;
            }
            if (demail.isEmpty()) {
                et_email.setError("Email is Required");
                et_email.requestFocus();
                return;
            }

            if (dpass.isEmpty()) {
                et_pass.setError("Password is Required");
                et_pass.requestFocus();
                return;
            }

            if (dpass.length() < 6) {
                et_pass.setError("Password Length Should be greater than 6 characters");
                et_pass.requestFocus();
                return;
            }

            if (dcpass.isEmpty()) {
                et_cnf_pass.setError("Password is Required");
                et_cnf_pass.requestFocus();
                return;
            }
            if (!dcpass.equals(dpass)) {
                et_cnf_pass.setError("Password Does not Matched!");
                et_cnf_pass.requestFocus();
                return;
            }

            if (dcontact.isEmpty()) {
                et_contact.setError("Contact is Required");
                et_contact.requestFocus();
                return;
            }

            if (dcity.isEmpty()) {
                et_city.setError("City is Required");
                et_city.requestFocus();
                return;
            }

            if (dage.isEmpty()) {
                et_age.setError("Age is Required");
                et_age.requestFocus();
                return;
            }

            progressBar.setVisibility(View.VISIBLE);

            mAuth.createUserWithEmailAndPassword(demail, dpass)
                    .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if (task.isSuccessful()) {
                                User user = new User(dname, demail, dcontact, dcity, dage);

                                FirebaseDatabase.getInstance().getReference("doctors")
                                        .child("Doctors_Registration")
//                                        .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                        .child(demail.replace(".", ","))
                                        .setValue(user)
                                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task) {

                                                if (task.isSuccessful()) {
                                                    Toast.makeText(signup.this, "Doctor Registered", Toast.LENGTH_SHORT).show();
                                                    progressBar.setVisibility(View.GONE);
                                                } else {
                                                    Toast.makeText(signup.this, "Failed to Registered, Try Again!" + task.getException(), Toast.LENGTH_LONG).show();
                                                    progressBar.setVisibility(View.GONE);
                                                }
                                            }
                                        });
                            } else {
                                Toast.makeText(signup.this, "Failed to Registered, Try Again!", Toast.LENGTH_LONG).show();
                                progressBar.setVisibility(View.GONE);
                            }
                        }
                    });

        }

这里是上传用户头像的功能

 private void upload_image() {

        FirebaseStorage storage = FirebaseStorage.getInstance();
        StorageReference uploader = storage.getReference("Image1"+ new Random().nextInt(50));
        uploader.putFile(filepath)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        uploader.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                FirebaseDatabase db = FirebaseDatabase.getInstance();
                                DatabaseReference root = db.getReference("Doctors_Registration");
                                User obj = new User(uri.toString()); 
                                root.child(et_email.getText().toString()).setValue(obj);
//                                iv.setImageResource(R.drawable.ic_launcher_background);
                                Toast.makeText(signup.this, "Profile Image Uploaded", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                });

    }

这里是用户模型class代码

public class User {
    public String name, email, password, contact, city, age, pimage;
    public  User(){
    }
    public User(String name, String email, String contact, String city, String age, String pimage){
        this.name = name;
        this.email = email;
        this.contact = contact;
        this.city = city;
        this.age = age;
        this.pimage = pimage;
    }
}

您的 User class 有两个构造函数:

  1. 不接受任何参数。
  2. 还有一个以 6 个字符串值作为参数。

在您试图构造一个 User 对象的两个屏幕截图中:

  1. 首先用一个字符串值,
  2. 然后是 5 个字符串值。

由于这些调用都不匹配您定义的构造函数,因此编译器无法编译您的代码。

要允许构建 User,请确保为要传递的参数添加构造函数重载,或者传递与您定义的构造函数相匹配的参数。