【问题标题】:Firebase Storage's OnSuccessListener callback not callingFirebase 存储的 OnSuccessListener 回调未调用
【发布时间】:2017-11-03 04:45:26
【问题描述】:

通过 Firebase 存储上传文件时,不会调用 onSuccess 方法。

我目前正在运行带有“com.google.firebase:firebase-storage:10.2.6”的 Android Studio 3.0 Canary 2。

fun uploadImage(pathToImage: String, downloadCallback: FirebaseCallback<String?>) {
        val file = Uri.fromFile(File(pathToImage))
        val ref = mStorRef.child("images/"+file.lastPathSegment)

        ref.putFile(file).addOnSuccessListener {
            object : OnSuccessListener<UploadTask.TaskSnapshot> {
                override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) {
                    val url = taskSnapshot?.downloadUrl
                    Log.d("FirebaseManager", "Upload Successful")
                    downloadCallback.callback(url.toString())
                }
            }
        }
    }

【问题讨论】:

    标签: android firebase kotlin firebase-storage


    【解决方案1】:

    通过使用{},您通过SAM conversion 传入一个lambda 作为侦听器。在这个 lambda 中,您正在定义成功时应该发生的事情:您正在创建一个从未使用过的 object。要将object 作为监听器传入,请使用()

    ref.putFile(file).addOnSuccessListener (
        object : OnSuccessListener<UploadTask.TaskSnapshot> {
            override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) {
                val url = taskSnapshot?.downloadUrl
                Log.d("FirebaseManager", "Upload Successful")
                downloadCallback.callback(url.toString())
            }
        }
    )
    

    或者只进行 SAM 转换,而不显式创建 object

    ref.putFile(file).addOnSuccessListener { taskSnapshot ->
        val url = taskSnapshot?.downloadUrl
        Log.d("FirebaseManager", "Upload Successful")
        downloadCallback.callback(url.toString())
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 2023-03-16
      • 1970-01-01
      • 2019-03-08
      • 2019-12-28
      • 2022-08-18
      • 2022-01-18
      相关资源
      最近更新 更多