Почему я получаю неправильную ссылку снова и снова на getUploadUrl? Это не работает - PullRequest
0 голосов
/ 10 января 2020

Я пытался решить эту проблему с помощью аналогичных тем и ответов здесь, но полностью потерпел неудачу. Мое изображение хранится в хранилище Firebase, и ссылка для загрузки базы данных работает, но это всегда неправильная ссылка. Я получаю "com.google. android .gms.tasks. zzu@8045166", поэтому изображение не отображается в приложении.

Это общий код старой версии GetDownloadUrl

* 1005. *

Я попробовал это

filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
                    {
                        if (task.isSuccessful())
                        {
                            //--- what i tried instead of: final String downloaedUrl = task.getResult().getDownloadUrl().toString();

                            final String downloadUrl = filePath.getDownloadUrl().toString();

                            Toast.makeText(SettingsActivity.this, "Profile Image uploaded Successfully...", Toast.LENGTH_SHORT).show();



1 Ответ

1 голос
/ 10 января 2020

Метод getDownloadUrl() выполняется асинхронно. Таким образом, вы не можете позвонить toString() сразу после. Вам нужно будет прикрепить обратный звонок. Кроме того, getDownloadUrl() в UploadTask.TaskSnapshot устарело. Таким образом, вы можете сделать это вместо:

filePath.putFile(resultUri).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 filePath.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            // retrieve your uri here
            Uri downloadUri = task.getResult();
            Log.d("TEST", "download uri: " + downloadUri.toString());
        } else {
            // load failed. Handle exception from task.getException()
        }
    }
});
...