![](/img/trans.png)
[英]OnComlete function is not calling after putfile in firebase storage
[英]Firebase Storage PutFile Kotlin Crashing
我的目標是嘗試將我從照片庫或相機捕獲的照片上傳到 Firebase 存儲到名為 ProfilePictures 的存儲桶/文件夾中。
一開始一切都很好,我使用畢加索將圖像分配給 ImageView 和 Intent for Camera,除了我調用uploadPhoto()
。 應用程序崩潰並在fileReference.putFile(imageUri)...
上重新啟動。
這是我的清單:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>
<uses-feature android:name="android.hardware.camera"
android:required="true" />
我正在使用 Firebase Storage 版本,它在我的 build.gradle 文件中 -> implementation 'com.google.firebase:firebase-storage:16.0.4'
這是我的代碼:
private var mStorageRef = FirebaseStorage.getInstance().getReference("profilePictures")
private fun uploadFile(name: String, callback: ()->Unit) {
if (selectedProfileImage != null) {
val imageUri = selectedProfileImage ?: return
var fileReference = mStorageRef.child(name + "." + getFileExtension(imageUri))
println(fileReference)
fileReference.putFile(imageUri).addOnSuccessListener {
println("Profile Image upload Successful")
callback()
}.addOnFailureListener {
println("Profile image upload failed")
println(it.stackTrace)
println(it.localizedMessage)
callback()
}
} else {
println("No profile picture selected")
callback()
}
}
這是我的堆棧跟蹤:
2019-12-03 14:23:34.521 7580-7761/com.fisherassociates.mt18academy E/AndroidRuntime: FATAL EXCEPTION: FirebaseStorage-Upload-1
Process: com.fisherassociates.mt18academy, PID: 7580
java.lang.NoSuchMethodError: No virtual method getToken(Z)Lcom/google/android/gms/tasks/Task; in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/com.fisherassociates.mt18academy-CsL1s9aKJKR7OHyF2sQSHw==/base.apk)
at com.google.firebase.storage.internal.Util.getCurrentAuthToken(com.google.firebase:firebase-storage@@16.0.4:148)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@16.0.4:65)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@16.0.4:57)
at com.google.firebase.storage.UploadTask.sendWithRetry(com.google.firebase:firebase-storage@@16.0.4:457)
at com.google.firebase.storage.UploadTask.beginResumableUpload(com.google.firebase:firebase-storage@@16.0.4:257)
at com.google.firebase.storage.UploadTask.run(com.google.firebase:firebase-storage@@16.0.4:198)
at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(com.google.firebase:firebase-storage@@16.0.4:1106)
at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
問題解決了。 我在 Android Studio 中使用 Firebase 工具來設置 Storage,然后將我的 build.gradle 應用程序文件中的實現添加到版本 16.0.4。
找到后 -> java.lang.NoSuchMethodError: No virtual method setTokenProvider
然后我查看了 Firebase Android 發行說明: https ://firebase.google.com/support/release-notes/android
通過將版本更改為 19.1.0,代碼現在可以工作了。
實現 'com.google.firebase:firebase-storage:19.1.0'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.