Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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,Firestore:GlideException:无法加载资源_Android_Firebase_Kotlin_Firebase Storage_Android Glide - Fatal编程技术网

Android,Firestore:GlideException:无法加载资源

Android,Firestore:GlideException:无法加载资源,android,firebase,kotlin,firebase-storage,android-glide,Android,Firebase,Kotlin,Firebase Storage,Android Glide,我正试图从我的firebase存储中加载一个图像,并在我的Cardview中显示它,但它不起作用。我得到的唯一结果是:class com.bumptech.glide.load.engine.GlideException:加载资源失败和噢,出了问题(我自己的信息)。这是我的密码 XML GlideAppModule 依赖关系 堆栈跟踪(删失链接) 我正在从cloud firestore获取我的产品对象,我的cardview中的所有内容都已正确加载,但相应的图像除外 谢谢你的帮助 编辑 不幸的是,

我正试图从我的
firebase存储中加载一个图像,并在我的Cardview中显示它,但它不起作用。我得到的唯一结果是:
class com.bumptech.glide.load.engine.GlideException:加载资源失败
噢,出了问题(我自己的信息)。这是我的密码

XML GlideAppModule 依赖关系 堆栈跟踪(删失链接) 我正在从
cloud firestore
获取我的产品对象,我的cardview中的所有内容都已正确加载,但相应的图像除外

谢谢你的帮助

编辑 不幸的是,向GlideApp添加侦听器不会提供额外信息

@BindingAdapter("loadImage")
fun setImageFromUrl(view: ImageView, url: String?) {
    if (!url.isNullOrEmpty()) {
        GlideApp
            .with(view)
            .load(url)
            .addListener(
                object : RequestListener<Drawable> {
                    override fun onLoadFailed(
                        e: GlideException?,
                        model: Any?,
                        target: Target<Drawable>?,
                        isFirstResource: Boolean,
                    ): Boolean {
                        if (e != null) {
                            Timber.d("Exception ist ${e.stackTraceToString()}")
                        }
                        return false
                    }

                    override fun onResourceReady(
                        resource: Drawable?,
                        model: Any?,
                        target: Target<Drawable>?,
                        dataSource: DataSource?,
                        isFirstResource: Boolean,
                    ): Boolean {
                        return false
                    }

                }
            )
            .into(view)
    } else {
        Timber.d("Oh, Something went wrong!")
    }
}
@BindingAdapter(“loadImage”)
fun setImageFromUrl(视图:ImageView,url:String?){
如果(!url.isNullOrEmpty()){
GlideApp
.带(视图)
.load(url)
.addListener(
对象:RequestListener{
覆盖加载失败(
e:例外情况?,
型号:有吗?,
目标:目标?,
isFirstResource:Boolean,
):布尔值{
如果(e!=null){
Timber.d(“异常ist${e.stackTraceToString()}”)
}
返回错误
}
覆盖资源就绪(
资源:可提取?,
型号:有吗?,
目标:目标?,
数据源:数据源?,
isFirstResource:Boolean,
):布尔值{
返回错误
}
}
)
.进入(视图)
}否则{
Timber.d(“哦,出了点问题!”)
}
}
错误仍然存在
class com.bumptech.glide.load.engine.GlideException:加载资源失败
。加载图像的权限也从
firebase cloud firestore

授予!!临时解决方案!! 所以我找到了解决问题的临时办法。而不是保存:

gs://censored.appspot.com/products/images/censored-SET_an238386.png
作为对图像的引用(这是正确的方法,但在这里它不起作用),通过单击提取https

然后,您将获得类似(此处审查)的内容:

将此
https链接
保存到您的
cloud firestore
数据库中,然后从那里获取它。与单独下载url链接相比,上述方法的优点是速度更快

但正如所说,这应该只是一个暂时的解决办法。我已经在Firebase UI GitHub存储库中打开了一个问题,我期待一个合适的解决方案

!!临时解决方案!! 所以我找到了解决问题的临时办法。而不是保存:

gs://censored.appspot.com/products/images/censored-SET_an238386.png
作为对图像的引用(这是正确的方法,但在这里它不起作用),通过单击提取https

然后,您将获得类似(此处审查)的内容:

将此
https链接
保存到您的
cloud firestore
数据库中,然后从那里获取它。与单独下载url链接相比,上述方法的优点是速度更快


但正如所说,这应该只是一个暂时的解决办法。我在Firebase UI GitHub存储库中打开了一个问题,我期待一个合适的解决方案,它可以在java中与我一起工作

    implementation 'com.firebaseui:firebase-ui-storage:3.2.1'
    implementation 'com.google.firebase:firebase-storage:19.2.1'
    implementation 'com.github.bumptech.glide:glide:4.11.0'
我在Firestore RecyclerView适配器中使用它

    String imgPath = "images/"+membersModel.getUid();
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference imageRef = storageRef.child(imgPath);
    imageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            Glide.with(holder.VmemBpic.getContext())
                    .load(uri)
                    .placeholder(R.drawable.ic_user)
                    .circleCrop()
                    .error(R.drawable.ic_user)
                    .into(holder.VmemBpic);
String imgPath=“images/”+membersModel.getUid();
StorageReference storageRef=FirebaseStorage.getInstance().getReference();
StorageReference imageRef=storageRef.child(imgPath);
imageRef.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Glide.with(holder.VmemBpic.getContext())
.load(uri)
.占位符(R.drawable.ic_用户)
.circleCrop()
.错误(R.drawable.ic_用户)
.into(holder.VmemBpic);

它在java中与我一起工作

    implementation 'com.firebaseui:firebase-ui-storage:3.2.1'
    implementation 'com.google.firebase:firebase-storage:19.2.1'
    implementation 'com.github.bumptech.glide:glide:4.11.0'
我在Firestore RecyclerView适配器中使用它

    String imgPath = "images/"+membersModel.getUid();
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference imageRef = storageRef.child(imgPath);
    imageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            Glide.with(holder.VmemBpic.getContext())
                    .load(uri)
                    .placeholder(R.drawable.ic_user)
                    .circleCrop()
                    .error(R.drawable.ic_user)
                    .into(holder.VmemBpic);
String imgPath=“images/”+membersModel.getUid();
StorageReference storageRef=FirebaseStorage.getInstance().getReference();
StorageReference imageRef=storageRef.child(imgPath);
imageRef.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Glide.with(holder.VmemBpic.getContext())
.load(uri)
.占位符(R.drawable.ic_用户)
.circleCrop()
.错误(R.drawable.ic_用户)
.into(holder.VmemBpic);

移除
fitCenter()
和try@ADM完全没有区别,仍然失败。在我看来,这与图像视图的
大小和图像本身的
大小有关
ImageView
大小应该不是问题。首先尝试最小化问题。删除
fitCenter()
并应用转换,确保设备上有internet。向Glide image load方法添加一个侦听器,并调试已删除的
fitCenter()和
异常
@ADM。应用(/…)
,一点区别都没有。向Glide添加一个侦听器绝对没有用,因为它告诉我相同的
GlideException:加载资源失败
。Internet连接一直可用,否则它将永远无法获得
存储参考
和所有其他
产品详细信息ned生成和无效缓存
,没有任何帮助。请删除
fitCenter()
和try@ADM完全没有区别,仍然失败。在我看来,这与图像视图的
大小和

gs://censored.appspot.com/products/images/censored-SET_an238386.png
https://firebasestorage.googleapis.com/v0/b/censored.appspot.com
/o/products%2Fimages%2Fcensored-Leihgeraet_an326331.png?alt=media&token=censored-c92b-4153-a3f3-censored
    implementation 'com.firebaseui:firebase-ui-storage:3.2.1'
    implementation 'com.google.firebase:firebase-storage:19.2.1'
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    String imgPath = "images/"+membersModel.getUid();
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference imageRef = storageRef.child(imgPath);
    imageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            Glide.with(holder.VmemBpic.getContext())
                    .load(uri)
                    .placeholder(R.drawable.ic_user)
                    .circleCrop()
                    .error(R.drawable.ic_user)
                    .into(holder.VmemBpic);