Member 13866118 Ответов: 3

Что я использую вместо .getdownloadurl в android firebase?


С обновлением .getDownloadUrl больше не работает, поэтому мне было интересно, как я могу изменить его в своем коде конкретно

<pre><pre> <pre> private void executeUploadTask(){

        Toast.makeText(getActivity(), "Uploading Image", Toast.LENGTH_SHORT).show();
        final String postId = FirebaseDatabase.getInstance().getReference().push().getKey();
        final StorageReference storageReference = FirebaseStorage.getInstance().getReference()
                .child("uploads/users" + FirebaseAuth.getInstance().getCurrentUser()
                        .getUid()+"/" + postId + "/upload_image");

        UploadTask uploadTask = storageReference.putBytes(mUploadBytes);
        uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Toast.makeText(getActivity(), "Filed", Toast.LENGTH_SHORT).show();

                Uri firebaseUri = taskSnapshot.getDownloadUrl();

                Log.d(TAG, "onSuccess: firebase download url: " + firebaseUri.toString());

                DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

                //things that should be in the database
                Post post = new Post();
                post.setImage(firebaseUri.toString());
                post.setDate(mDateOfUse.getText().toString());
                post.setFileName(mFileName.getText().toString());
                post.setGrade(mGrade.getText().toString());
                post.setNameOfClass(mClass.getText().toString());
                post.setPageNumber(mPage.getText().toString());
                post.setReflection(mReflection.getText().toString());
                post.setPost_id(postId);
                post.setUser_id(FirebaseAuth.getInstance().getCurrentUser().getUid());
                post.setRatingBar(Float.toString(mRatingBar.getRating()));

                reference.child(getString(R.string.node_post))
                        .child(postId)
                        .setValue(post);

                resetFields();

            }


}

}

Что я уже пробовал:

Я пытался реализовать
<pre lang="java">Task<Uri> urlTask = storageReference.getDownloadUrl().urlTask.addOnSuccessListener(new OnSuccessListener<>())
но я не знаю, куда его поместить в моем коде. Пожалуйста, помогите мне, я действительно в отчаянии.

3 Ответов

Рейтинг:
20

Member 13866118

Решено: я изменился

Uri firebaseUri = taskSnapshot.getDownloadUrl();


к

Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();


Member 14126339

спасибо, чувак!

Рейтинг:
1

YannickNascimento

вы можете использовать это вместо этого

<pre> final StorageReference ref = mStorageRef.child("folder_name").child(imageUri.getLastPathSegment());
            //uploadTask = ref.putFile(filepa);

            Task<Uri> urlTask = ref.putFile(imageUri).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();
                    }

                    // Continue with the task to get the download URL
                    return ref.getDownloadUrl();
                }
            }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                @Override
                public void onComplete(@NonNull Task<Uri> task) {
                    if (task.isSuccessful()) {
                        Uri downloadUrl = task.getResult();
                        mProgress.dismiss();
                    } else {
                        // Handle failures
                        // ...
                    }
                }
            });


это работает для меня


Рейтинг:
1

Member 14759326

изменить это
Uri downloadUrl = taskSnapshot.getDownloadUrl();

до настоящего времени

Task<uri> downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl();