'download url is getting as com.google.android.gms.tasks.zzu@441942b : Firebase Storage

i have checked available resources and yet either i get error or at best i get com.google.android.gms.tasks.zzu@5f9a842 as the uri

Following this latest google doc here, i still got the com.gms as url

here is my code

            val fileRef = storageProfilePicRef!!.child(firebaseUser.uid + "jpg")

            val uploadTask = fileRef.putFile(imageUri!!)
            uploadTask.continueWith {
                if (!it.isSuccessful) {
                    pd.dismiss()
                    it.exception?.let { t ->
                        throw t
                    }
                }
                fileRef.downloadUrl
            }.addOnCompleteListener {
                if (it.isSuccessful) {
                    val downloadUrl = it.result
                    myUri = downloadUrl.toString()

                    print("Task: ${downloadUrl}")
                    ...

Terminal: I/System.out: Task: com.google.android.gms.tasks.zzu@4298dc1(HTTPLog)-Static: isSBSettingEnabled false



Solution 1:[1]

Solved !!!

        val fileRef = storageProfilePicRef!!.child(firebaseUser.uid + "jpg")

        val uploadTask = fileRef.putFile(imageUri!!)
        uploadTask.continueWith {
            if (!it.isSuccessful) {
                pd.dismiss()
                it.exception?.let { t ->
                    throw t
                }
            }
            fileRef.downloadUrl
        }.addOnCompleteListener {
            if (it.isSuccessful) {
                val downloadUrl = it.result //Here returns a task..
                myUri = downloadUrl.toString()

                print("Task: ${downloadUrl}")
                ...

val downloadurl = it.result returns a Task

correct it by adding an addOnSuccessListener

so the correct code is

val uploadTask = fileRef.putFile(imageUri!!)
        uploadTask.continueWith {
            if (!it.isSuccessful) {
                pd.dismiss()
                it.exception?.let { t ->
                    throw t
                }
            }
            fileRef.downloadUrl
        }.addOnCompleteListener {
            if (it.isSuccessful) {
                it.result!!.addOnSuccessListener{task ->
                                 myUri = task.toString()
                                print("$myUri")
                                 ...
                                    }

Solution 2:[2]

You're logging the wrong value. Instead of this:

print("Task: ${downloadUrl}")

Log this:

print("Task: ${downloadUrl.result.toString()}")

Your downloadUrl variable is not correctly named. It's a Task, not a URL. It might be clearer like this:

val task = it.result
val uri = task.result
val uriAsString = uri.toString()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 X-Black...
Solution 2 Doug Stevenson