Метод Storage getDownloadUrl () устарел, и я следовал за новым методом, но не могу опубликовать ссылку на мою базу данных, поскольку URL-адрес, сохраненный в firebaseUri, не передается. Если я оставляю сообщение в методе onCompleteListener, изображениессылка будет сохранена, но другие поля не будут сохранены в базе данных.Следовательно, я в значительной степени застрял.
Я следовал методу, чтобы получить URL-ссылку и ее работу, но, поскольку мне нужно опубликовать другие поля и URL-ссылку изображения вместе, я не могу этого сделатьтак
private void upload() {
if (selectedImageUri != null) {
final String postId = FirebaseDatabase.getInstance().getReference().push().getKey();
final StorageReference ref = storageReference.child("posts/users/"+ FirebaseAuth.getInstance().getCurrentUser().getUid() + "/post_image" );
ref.putFile(selectedImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressDialog.dismiss();
Toast.makeText(PostItemActivity.this, "Uploaded", Toast.LENGTH_SHORT).show();
ref.putFile(selectedImageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return ref.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri firebaseUri = task.getResult().toString();
}
}
});
Post post = new Post();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
post.setImage(firebaseUri.toString());
post.setTitle(InputTitle.getText().toString());
post.setDescription(InputItemDescription.getText().toString());
post.setPost_id(postId);
reference.child(getString(R.string.node_posts))
.child(postId)
.setValue(post);
}
})
}
}