Android 将照片导出到屏幕截图不会';不要将照片添加到图库中

Android 将照片导出到屏幕截图不会';不要将照片添加到图库中,android,kotlin,android-image,android-gallery,android-camera-intent,Android,Kotlin,Android Image,Android Gallery,Android Camera Intent,我的目的是生成一个图像,用户可以稍后在手机的多媒体资料中看到它 为此,我使用以下代码: private fun saveToInternalStorage(bitmap: Bitmap) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { saveBitmapAndroidQ(bitmap) } else { val imagesDir =

我的目的是生成一个图像,用户可以稍后在手机的多媒体资料中看到它

为此,我使用以下代码:

private fun saveToInternalStorage(bitmap: Bitmap) {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            saveBitmapAndroidQ(bitmap)
        } else {
            val imagesDir =
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + File.separator + "Screenshots")
                    .toString()
            val image = File(imagesDir, "AppName_${UUID.randomUUID()}.jpg")
            val fos = FileOutputStream(image)

            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            Objects.requireNonNull(fos).close();
            Log.d("exportation", "imagesDir: " + image.toString())
        }
    }
图像存储在以下URI中(我已手动检查它,发现它位于手机的内部存储器中):

/storage/simulated/0/Pictures/Screenshots/AppName_113a5010-fbef-41da-b4cc-88f94e25740e.jpg

但是,当我打开我的Gallery应用程序时,它不会出现在任何地方,也不会按名称查找,也不会出现在“Screenshots”文件夹中,等等。除了我用该应用程序生成的新图像,所有屏幕截图都会出现

如何让多媒体资料显示我的图像?

另一方面,我希望能够在图片中创建一个目录,其中包含我的应用程序的名称,例如:

/storage/emulated/0/Pictures/MyAppFolder/

要存储图像(并将其显示在库中),如何创建自己的目录?


提前非常感谢

感谢blackapps指导我使用什么,这是我错过的:

清单

<manifest [...]>

[...]

    <!-- Refresh Media -->
    <protected-broadcast android:name="android.intent.action.MEDIA_MOUNTED" />

    <application [...]

        <activity [...]

            <!-- Refresh Media  -->
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_MOUNTED" />
                <data android:scheme="file" />
            </intent-filter>

        </activity>
    </application>
</manifest>
</manifest>
    private fun addGallery(file: File) {
        MediaScannerConnection.scanFile(requireContext(), 
            arrayOf<String>(file.getAbsolutePath()),
            arrayOf("image/jpeg"),
            object : MediaScannerConnection.OnScanCompletedListener {
                override fun onScanCompleted(path: String?, uri: Uri?) {
                    // Blank
                }
            })
    }

[...]

如果重新启动设备,一段时间后它将进入“多媒体资料”中。您可以使用File.mkdirs()在图片中创建子目录。如果您希望您的图片立即在“多媒体资料”中可见,则必须在媒体扫描仪中找到您的文件路径。