Glide不会显示来自FIrebase Storage的图像

问题描述 投票:1回答:1

我在我的android项目中使用了Glide 4.6.1和Firebase 11.8.0。我将所有内容与Firebase相关联。

我想使用Glide从Firebase存储中加载图像。在Firebase文档中,它们显示了以下示例:

Glide.with(this /* context */)
        .using(new FirebaseImageLoader())
        .load(storageReference)
        .into(imageView);

但这不起作用,因为Glide 4.x不支持.using()方法。

我的目标是:

StorageReference imageRef = storage.getReference().child("task1.png");

Glide.with(this).load(imageRef).into(ImageView);

但是imageRef是这样的:gs://bucket/images/stars.jpg

Glide无法从此链接加载。所以我尝试了这个:

StorageReference imageRef = storage.getReferenceFromURL("https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg");

但是Firebase将http链接“转换”为gs,这再次无效。

所以我用Google搜索了问题,我发现了这个解决方案:

storageRef.child("task1.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                String imageRef = uri.ToString();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle any errors
            }
        });

Glide.with(this).load(imageRef).into(ImageView);

uri不是图像的直接下载链接。

因此,我能想到的唯一解决方案是直接在字符串中使用给出http链接,并在Glide的.load()方法中使用它,这不是我的目标。我需要从存储引用中获取直接链接以与Glide一起使用。

android firebase android-glide firebaseui
1个回答
0
投票

这对我有用:

将onCompleteListener添加到您的引用中

如果任务成功,则从task.getResult()获取链接

但我不确定这是不是最好的方式,GoodLuck!

    storageReference = storage.getReference().child("images/").child(user.getUid());
    storageReference.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull Task<Uri> task) {
          if(task.isSuccessful())
          {
              Glide.with(MainActivity.this)
                      .load(task.getResult())
                      .apply(RequestOptions.circleCropTransform())
                      .into(ivProfile);

          }
          else {
              Toast.makeText(MainActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
              Log.d("Firebase id",user.getUid());
          }






        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.