android 使用Kotlin从Firebase存储中加载图像

0lvr5msh  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(146)

`
你好,我尝试使用downloadUrl从Firebase存储加载一些图像,但它总是崩溃,我不知道为什么我已经在存储中设置了规则,但它仍然不工作
我添加了这些依赖项
实现平台(“com.google.firebase:firebase-bom:31. 0. 2”)
我的代码是:

`var storageRef = Firebase.storage.reference.child("post/$uId/$fileName.png") //I want to load image from a certain user

var imageUri:String?=null

storageRef.downloadUrl.addOnSuccessListener { Uri->
    imageUri=Uri.toString() 
}
-.addOnFailureListener {
    Toast.makeText(this@UploadActivity, it.message, Toast.LENGTH_SHORT).show() 
}`

基本上,在调试时,它不会输入addOnSuccessListener或addOnfailureLister,并且imageUri保持为空,即使我可以看到downloadUrl已将gs://...转换为https://firebase...
我还在我的firebase存储中添加了这些规则

`rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
`
moiiocjp

moiiocjp1#

原因是从Firebase存储获取图像可能需要时间,在从Firebase存储获取图像之前,您尝试在ImageView中加载图像,但应用程序崩溃,因为URI仍然为空。

Firebase.storage.reference.child("post/$uId/$fileName.png").
    downloadUrl.addOnSuccessListener { Uri->
         Glide.with(YOUR_ACTIVITY_CONTEXT).
         load(Uri.toString()).
         into(YOUR_IMAGE_VIEW)
    }
    -.addOnFailureListener {
        Toast.makeText(this@UploadActivity, it.message, Toast.LENGTH_SHORT).show() 
    }`

For detailed knowledge of Glide Library here is the link

相关问题