Как получить URL-адрес загрузки из Firebase Storage? - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу получить URL загрузки из uploadTask.addOnProgressListener метода Firebase.Как я могу получить URL загрузки, используя следующий код?

    UploadTask uploadTask = storageRef.putBytes(data);

    uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
    {
        @Override
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
        {
            Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult());
        }
    });

Я использовал taskSnapshot.getTask().getResult(), но это не работает.

1 Ответ

0 голосов
/ 14 ноября 2018

Чтобы получить URL-адрес для загрузки, вам нужно использовать addOnSuccessListener, как показано в следующих строках кода:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                String url = uri.toString();

                //Do what you need to do with url
            }
        });
    }
});

Как и в замечаниях к выпуску Firebase в мае23, 2018 отмечается, что:

Облачное хранилище версии 16.0.1

Удалены устаревшие методы StorageMetadata.getDownloadUrl () и UploadTask.TaskSnapshot.getDownloadUrl ().Чтобы получить текущий URL для загрузки, используйте StorageReference.getDownloadUr ().

Так что теперь при вызове getDownloadUrl () для StorageReference объекта он возвращает Task объект и не объект Uri больше.

Пожалуйста, помните, что ни прослушиватель успеха, ни прослушиватель ошибок (если вы собираетесь его использовать) не будут вызваны, если ваше устройство не можетдобраться до бэкэнда Firebase Storage.Прослушиватели успеха / неудач будут вызываться только после того, как данные будут приняты или отклонены серверами Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...