如何从firebase存储获取uri并将其保存在android(java)云firestore中

如何从firebase存储获取uri并将其保存在android(java)云firestore中,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,在这里,我添加了我正在处理的代码。我尝试了如中所说的那样,但是图像被上传到Firebase存储中,但Uri没有在Cloud Firestore数据库中更新。我错过了什么。? java文件: fAuth.createUserWithEmailAndPassword(email.getText().toString(),password.getText().toString()).addOnSuccessListener(authResult -> { Fire

在这里,我添加了我正在处理的代码。我尝试了如中所说的那样,但是图像被上传到Firebase存储中,但Uri没有在Cloud Firestore数据库中更新。我错过了什么。? java文件:

fAuth.createUserWithEmailAndPassword(email.getText().toString(),password.getText().toString()).addOnSuccessListener(authResult -> {
                FirebaseUser user =fAuth.getCurrentUser();

                Toast.makeText(Register.this, "Account Created",Toast.LENGTH_SHORT).show();

                 StorageReference Image_path = sRef.child("Profile_Images").child(user.getUid() + ".jpg");
                Image_path.putFile(mainImageURI).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Image_path.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                Uri download_uri = uri;
                                DocumentReference sc=fStore.collection("image").document(user.getUid());
                                Map<String,String> useInfo = new HashMap<>();
                                useInfo.put("Profile Pic",download_uri.toString());
                                sc.set(useInfo);
                            }
                        });
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        String setupError = e.getMessage();
                        Toast.makeText(Register.this, "IMAGE Error : " + setupError, Toast.LENGTH_LONG).show();
                    }
                });
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

将完整侦听器添加到集合()中

fStore.collection(“Users”).document(user.getUid()).set(useInfo.addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(Register.this,“Account Created”,Toast.LENGTH_LONG.show();
}否则{
字符串错误=task.getException().getMessage();
Toast.makeText(Register.this,“FireStore错误:+错误,Toast.LENGTH_LONG).show();
}
}
});
}否则{
//处理故障
字符串错误=task.getException().getMessage();
Toast.makeText(Register.this,“FireStore错误:+错误,Toast.LENGTH_LONG).show();
}

您是否尝试将完整的侦听器附加到set()操作?除此之外,请编辑您的问题并添加Firestore规则。感谢分享您的知识@AlexMamo。当我在set()操作中添加完整的侦听器时,它起作用了。正如你问的,我也编辑了我的qn。
   fStore.collection("Users").document(user.getUid()).set(useInfo).addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        if(task.isSuccessful()){
                                            Toast.makeText(Register.this, "Account Created", Toast.LENGTH_LONG).show();
                                        }else{
                                            String error = task.getException().getMessage();
                                            Toast.makeText(Register.this, "FireStore Error : " + error, Toast.LENGTH_LONG).show();
                                        }
                                    }
                                });
                            } else {
                                // Handle failures
                                String error = task.getException().getMessage();
                                Toast.makeText(Register.this, "FireStore Error : " + error, Toast.LENGTH_LONG).show();
                            }