android - 在设备上下载 GIF 时出现异常
问题描述
我像这样用 Glide 下载 GIF
Glide.with(this).asFile().load(contentURL)
.listener(object: RequestListener<File>{
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<File>?, isFirstResource: Boolean): Boolean {
return false
}
override fun onResourceReady(resource: File?, model: Any?, target: Target<File>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
Log.d("TEST", getGifUri(resource?.absolutePath, resource?.name).toString())
return false
}
})
.submit()
在 getGifUri 函数中:
private fun getGifUri(filePath: String?, fileName: String?): Uri{
val values = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
put(MediaStore.MediaColumns.MIME_TYPE, "image/gif")
put(MediaStore.MediaColumns.DATA, filePath)
}
return this.contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)!!
}
当我在模拟器上执行此操作时,一切都很好并且很有趣返回 uri
内容://媒体/外部/图像/媒体/61
但是当我尝试在设备上执行此操作时,我有一个例外:
com.bumptech.glide.load.engine.CallbackException: Unexpected exception thrown by non-Glide code
Caused by: java.lang.IllegalArgumentException: Requested path /data/data/com.sasmobile.fonts_android/cache/image_manager_disk_cache/c3766c85acb9155ff2a8856e8cf9d772f6f86f316926923e605da8c0a7083738.0 doesn't appear under [/storage/emulated/0]
解决方案
推荐阅读
- fortran - 从 MKL 11.3 库调用 DPOSV 例程期间出现分段错误
- android - 如何在 AWS Cognito android 中删除多个数据集?
- c++ - 为什么我得到分段错误
- android - 根据EditText视图Android自动缩放文本(字体大小)
- python - tensorflow 运行时无法启动 Tensorboard
- javascript - 在循环的 JavaScript 对象数组上添加删除按钮
- javascript - 显示所选文件的名称
- python - 订单号与索引号不同
- javascript - 如何在 Angular 中更改类变量
- android - cmd 给出 com.android.ide.common.process.ProcessException: 无法执行 aapt erro