首页 > 解决方案 > 即使在 MediaScannerConnection.scanFile() 之后,存储在 getExternalFilesDir() 目录中的图像在电话库中也不可见

问题描述

我将用户捕获的图像保存在应用程序特定的外部目录中,getExternalFilesDir()并希望该图像在用户库中也可见。根据文档,保存在这些目录中的任何媒体(在我的情况下为图像)对 MediaScanner 不直接可见,但我们仍然可以使用MediaScannerConnection.scanFile().

我遵循与上述相同的步骤,将图像保存在我明确调用MediaScannerConnection.scanFile()但仍然没有任何反应的目录中后,图像存储在应用程序特定的外部目录中但在图库中不可见?


//getting app specific external directory
val mediaStorageDir = File(app.getExternalFilesDir(Environment.DIRECTORY_PICTURES))
val file = File("${mediaStorageDir.path}${File.separator}front_image.jpg")

//saving file
val bos = FileOutputStream(file)
val original = BitmapFactory.decodeByteArray(this, 0, size)
original.compress(Bitmap.CompressFormat.JPEG, 100, bos)

//after saving file
MediaScannerConnection.scanFile(context, arrayOf(file.absolutePath), null, null)
                             

我正在测试 Android 版本:9 | 自定义操作系统:Funtouch OS_9.2 | 型号:vivo 1921

标签: androidandroid-imageandroid-9.0-pieandroid-storageandroid-mediascanner

解决方案


是的 getExternalFilesDir() 是一个应用程序特定的目录。MediaStore 扫描仪不会索引它,因此图库应用程序不知道您的图像。这就是它的意图。——</p>


推荐阅读