从Firebase下载图像

时间:2019-02-09 23:35:11

标签: android firebase firebase-storage

我正在尝试从Firebase下载图像。自从他们弃用get URI方法以来,我一直没有找到对我有用的替代方法。

我尝试过在firebase上使用方法,并在stackoverflow上使用其他方法,但其他解决方案似乎都无济于事。

        profileImageReference = FirebaseStorage.getInstance().getReference("profile_images");
        String imageFile = "QxTTXQYPlaN2nEdel6LPZ5HxbE33.jpeg";
        StorageReference profRef = profileImageReference.child(imageFile);
        blogImageView = mView.findViewById(R.id.blog_image);

        Glide.with(context).load(profRef).into(blogImageView);

据我了解,此存储引用应指向profile_images文件夹,然后获取图像字符串的子代。但是它仍然无法在屏幕上更新。我删除了请求选项例外,因为我想看看它是否以某种方式覆盖了下载

1 个答案:

答案 0 :(得分:0)

logcat尝试获取图像时是否显示任何信息/异常?我最初的想法是,由于您正在使用Firebase,因此需要将Glide更改为GlideApp,并在项目中创建一个扩展AppGlideModule的类,以允许Glide使用Firebase图像加载。例如:

import android.content.Context;
import com.bumptech.glide.Glide;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
import com.firebase.ui.storage.images.FirebaseImageLoader;
import com.google.firebase.storage.StorageReference;
import java.io.InputStream;

@GlideModule
public final class TheGlideModule extends AppGlideModule {

    @Override
    public void registerComponents(Context context, Glide glide, Registry registry) {
        // Register FirebaseImageLoader to handle StorageReference
        registry.append(StorageReference.class, InputStream.class,
                new FirebaseImageLoader.Factory());
    }

}

然后,制作项目并为Glide重建以创建新的关联,并将Glide.with(context).load(profRef).into(blogImageView);替换为GlideApp.with(context).load(profRef).into(blogImageView);