【问题标题】:getBytes from Firebase storageReference not working来自 Firebase storageReference 的 getBytes 不起作用
【发布时间】:2023-03-05 01:50:05
【问题描述】:

我正在创建我的第一个应用程序,我想在其中将图片从 Firebase 存储下载到位图,然后再更改手机的壁纸。

目前,该功能都没有进入

 onSuccess(byte[] bytes) {

或到

 onFailure(@NonNull Exception exception) {

而是直接跳到

return bmp[0]; 

我不明白为什么,我做错了什么。

  • Storage 和 storageRef 不为空。

    public static Bitmap getImageBitmap(String url) {
    
        com.google.firebase.storage.FirebaseStorage storage = com.google.firebase.storage.FirebaseStorage.getInstance();
        StorageReference gsReference = storage.getReferenceFromUrl(url);
    
        if (bmp == null) {
            bmp = new Bitmap[1];
        }
    
         final long ONE_MEGABYTE = 1024 * 1024;
    
         gsReference.getBytes(ONE_MEGABYTE)
        .addOnSuccessListener(new OnSuccessListener<byte[]>(){            
            @Override
            public void onSuccess(byte[] bytes) {
                BitmapFactory.Options options = new 
                BitmapFactory.Options();
                options.inMutable = true;
                bmp[0] = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                int errorCode = ((StorageException) exception).getErrorCode();
                String errorMessage = exception.getMessage();
                Log.d("TAG", errorMessage + errorCode);
            }
        });
        return bmp[0];
    }
    

在我的尝试中,我尝试通过以下方式使用 Glide:

Glide.with(user.getmContext())
            .asBitmap()
            .load(url)
            .into(new SimpleTarget<Bitmap>() {
                @Override
                public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                    bmp[0] = resource;
                }
            });
    return bmp[0];

但这并没有产生任何变化,onResourceReady(位图资源)永远不会被调用。

【问题讨论】:

    标签: android firebase bitmap firebase-storage android-glide


    【解决方案1】:

    您需要等待结果。获取字节方法是异步的,这就是为什么您要添加侦听器并且您的值将在异步任务完成后设置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2021-06-09
      • 2016-04-22
      相关资源
      最近更新 更多