如何从firebase存储获取uri并将其保存在android(java)云firestore中
在这里,我添加了我正在处理的代码。我尝试了如中所说的那样,但是图像被上传到Firebase存储中,但Uri没有在Cloud Firestore数据库中更新。我错过了什么。? java文件:如何从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
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();
}