Firebase存储,无法成功获取下载URL。 (Android)

时间:2018-08-24 20:15:04

标签: android firebase imageview google-cloud-firestore

到目前为止,这是我的代码。

 public void getimage() {
    FirebaseStorage storagi = FirebaseStorage.getInstance();
    StorageReference imagerefi = storagi.getReference();
        userimage = (ImageView) findViewById(R.id.imageViewuser);
        StorageReference pathReference = imagerefi.child("images/"+somename);

        imagerefi.child("images/"+somename).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                // Got the download URL for 'users/me/profile.png'
                uri2 = uri.toString();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle any errors
            }
        });



Glide.with(this).asDrawable().apply(fitCenterTransform()).load(uri2).into(userimage);


    }

我尝试了没有成功的监听器和许多其他事情。当我只是简单地从Firebase控制台复制粘贴URL时,就可以使图像正常运行。但是uri2无法正常工作。

我基本上想要获得以firebase用户uid命名的文件,并在firebase存储的根目录内的名为images的文件夹内,并将其显示在imageview上。

非常感谢您的帮助!我已经尝试了好几个星期来解决这个问题。

///最近从stactoverflow帖子中修改了一些代码//因此,在当前配置下,我什么也没做

2 个答案:

答案 0 :(得分:0)

要解决此问题,只需移动以下代码行:

Glide.with(this).asDrawable().apply(fitCenterTransform()).load(uri2).into(userimage);

在以下代码行之后的回调内部:

uri2 = uri.toString();

请记住,onSuccess()方法具有异步行为,如果您尝试在此方法之外使用uri2变量的值,它将始终为null,因为到那时为止尝试访问它,它的值尚不可用。如果要在该方法之外使用它,建议您从此 post 中查看anwser的最后一部分,其中我已经解释了如何使用自定义回调来完成。您也可以查看此 video 以获得更好的理解。

答案 1 :(得分:-1)

我希望somename是一个有效的名称。试试这个

只需在onSuccess内的imageview中移动设置图像的行,以确保uri2是firebaseStorage的网址

public void getimage() {
    FirebaseStorage storagi = FirebaseStorage.getInstance();
    StorageReference imagerefi = storagi.getReference();
        userimage = (ImageView) findViewById(R.id.imageViewuser);
        StorageReference pathReference = imagerefi.child("images/"+somename);

        imagerefi.child("images/"+somename).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                // Got the download URL for 'users/me/profile.png'
                uri2 = uri.toString();
           Glide.with(this).asDrawable().apply(fitCenterTransform()).load(uri2).into(userimage);
 }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle any errors

                Log.e("ERRORLOADING",exception.getMessage());
            }
        });





    }