如何在图库中下载图像?

时间:2019-05-17 10:51:35

标签: android decode android-glide

我遇到两个错误,这是DecodePath的问题。我想保存一个文件,但是由于这个错误而不能。

我的错误:

   Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable}
Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000

这是我尝试获取文件路径的地方:

private suspend fun getWallpaperFile(photo: Photo): File = withContext(Dispatchers.IO) {
    val file = Glide.with(context)
        .downloadOnly()
        .load(photo.src?.portrait)
        .submit()
        .get()
    val renamedFile = File(
        file.parent,
        DEFAULT_FILE_NAME
    )

    file.renameTo(renamedFile)
    renamedFile
}

在这一部分中,我将我的WallpaperFile保存在Gallery中:(我无法保存文件)

private suspend fun saveWallpaperInGallery(photo: Photo): String = withContext(Dispatchers.IO) {
    val context = context
    val wallpaperFile = getWallpaperFile(photo)
    val wallpaperUri = MediaStore.Images.Media.insertImage(
        context.contentResolver,
        wallpaperFile.path, wallpaperFile.name, "By ${photo.photographer}"
    )
    val intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).apply {
        data = Uri.parse(wallpaperUri)
    }
    context.sendBroadcast(intent)

    wallpaperUri
}

我希望能够将墙纸文件保存到图库。我认为问题是我没有解码文件。我不是100%确信这是主要问题。

希望大家可以帮助我提出一些想法,甚至为我提供解决方案。

0 个答案:

没有答案