Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 来自Firebase storageReference的getBytes不工作_Android_Firebase_Bitmap_Firebase Storage_Android Glide - Fatal编程技术网

Android 来自Firebase storageReference的getBytes不工作

Android 来自Firebase storageReference的getBytes不工作,android,firebase,bitmap,firebase-storage,android-glide,Android,Firebase,Bitmap,Firebase Storage,Android Glide,我正在创建我的第一个应用程序,在这个应用程序中,我想将图片从Firebase存储下载到位图中,然后依次更改手机的壁纸 目前,该函数也没有进入 onSuccess(byte[] bytes) { 或 相反,它跳到了正确的位置 return bmp[0]; 我不明白为什么,我做错了什么 Storage和storageRef不为null public static Bitmap getImageBitmap(String url) { com.google.firebase.sto

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

目前,该函数也没有进入

 onSuccess(byte[] bytes) {

相反,它跳到了正确的位置

return bmp[0]; 
我不明白为什么,我做错了什么

  • Storage和storageRef不为null

    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];
    }
    
    公共静态位图getImageBitmap(字符串url){
    com.google.firebase.storage.FirebaseStorage存储=com.google.firebase.storage.FirebaseStorage.getInstance();
    StorageReference gsReference=storage.getReferenceFromUrl(url);
    如果(bmp==null){
    bmp=新位图[1];
    }
    最终长1兆字节=1024*1024;
    gsReference.getBytes(1兆字节)
    .addOnSuccessListener(新OnSuccessListener(){
    @凌驾
    成功时的公共void(字节[]字节){
    BitmapFactory.Options=new
    选项();
    options.inMutable=true;
    bmp[0]=BitmapFactory.decodeByteArray(字节,0,字节.长度,选项);
    }
    }).addOnFailureListener(新的OnFailureListener(){
    @凌驾
    public void onFailure(@NonNull异常){
    int errorCode=((StorageException)exception).getErrorCode();
    字符串errorMessage=exception.getMessage();
    Log.d(“标签”,错误信息+错误代码);
    }
    });
    返回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];
Glide.with(user.getmContext())
.asBitmap()
.load(url)
.into(新的SimpleTarget(){
@凌驾

public void onResourceReady(@NonNull Bitmap resource,@Nullable Transition您需要等待结果。Get bytes方法是异步的,这就是您添加侦听器的原因,您的值将在异步任务完成后设置

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];