【发布时间】:2019-01-31 16:16:18
【问题描述】:
我正在将一些图像上传到 Firebase 存储,并且每当单击取消按钮时我都需要取消该过程,但我无法处理取消并且应用程序崩溃了。这是我的代码和 logcat 错误:
代码:
buttonCancel.setOnClickListener{
uploadTask.cancel()
}
val storageRef = FirebaseStorage.getInstance().reference
for (path in pathsList){
val imgRef = storageRef.child("${Calendar.getInstance().timeInMillis}.jpg")
val fileUri = Uri.fromFile(File(path))
uploadTask = imgRef.putFile(fileUri)
try {
uploadTask.addOnCompleteListener {
p0 -> val downloadUri = p0.result.toString()
//do sth with download uri
}
}
catch (ex: Exception){
Toast.makeText(this, "upload canceled", Toas.LENGHT_SHORT).show
break
}
}
Logcat 错误:
08-25 18:20:59.149 22419-23332/packagename E/StorageException: StorageException has occurred.
The operation was cancelled.
Code: -13040 HttpResult: 0
08-25 18:20:59.158 22419-22419/packagename D/AndroidRuntime: Shutting down VM
08-25 18:20:59.161 22419-22419/packagename E/AndroidRuntime: FATAL EXCEPTION: main
Process: packagename, PID: 22419
com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.storage.StorageException: The operation was cancelled.
at com.google.firebase.storage.StorageTask.getResult(Unknown Source)
at com.google.firebase.storage.StorageTask.getResult(Unknown Source)
at packagename.myFragment$myMethod$1$1.onComplete(myFragment.kt:348)
at com.google.firebase.storage.zzq.zza(Unknown Source)
at com.google.firebase.storage.zzac.zza(Unknown Source)
at com.google.firebase.storage.zzaf.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Caused by: com.google.firebase.storage.StorageException: The operation was cancelled.
at com.google.firebase.storage.UploadTask.onCanceled(Unknown Source)
at com.google.firebase.storage.StorageTask.zza(Unknown Source)
at com.google.firebase.storage.StorageTask.zza(Unknown Source)
at com.google.firebase.storage.StorageTask.zzk(Unknown Source)
at com.google.firebase.storage.StorageTask.zzl(Unknown Source)
at com.google.firebase.storage.zzx.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
08-25 18:20:59.428 22419-23333/packagename E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.internal.api.FirebaseNoSignedInUserException: Please sign in before trying to get a token.
我怎样才能捕捉到这个异常?(请注意,我是在 for 循环中执行此操作的,我不知道这可能会有所不同)
【问题讨论】:
-
日志中的完整错误是什么,而不仅仅是第一行?它在您的代码中指向哪些行?
-
@DougStevenson 我更新了帖子
标签: android firebase kotlin firebase-storage