После получения URL-адреса из хранилища, как мне разместить его в базе данных? - PullRequest
0 голосов
/ 29 декабря 2018

Метод 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);


                    }
                })


    }
}
...