Как сохранить изображение в галерее в API 29 в android? - PullRequest
0 голосов
/ 13 марта 2020

Из API 29 Environment.getExternalStorageDirectory() и Intent.ACTION_MEDIA_SCANNER_SCAN_FILE устарели.

Я использовал следующий код для сохранения файла изображения в указанной папке c во внутреннем хранилище:

  private fun saveFile(applicationContext: Context, file: File){
    val folder  = "/customFolder"
    try {
        val destFile = File("${Environment.getExternalStorageDirectory()}${folder}/${file.name}")
        FileUtils.copyFile(file,destFile) 

        val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
        val contentUri = Uri.fromFile(file)!!
        mediaScanIntent.data = contentUri
        applicationContext.sendBroadcast(mediaScanIntent)

    } catch (ex: IllegalArgumentException) {
    } catch (ex: RuntimeException) {
    }
}

Ссылочная ссылка для FileUtils.copyFile(File srcFile,File destFile) - https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html#copyFile ( java .io.File,% 20 java .io.File)

После обновления до API 29 выше код не работает. Как изменить Environment.getExternalStorageDirectory() и Intent.ACTION_MEDIA_SCANNER_SCAN_FILE для API 29?

1 Ответ

0 голосов
/ 20 апреля 2020

Это будет работать, это будет хранить ваш файл в указанной папке приложения, вы также можете использовать MediaStorage для хранения img в галерее, теперь новые функции - getFilesDir () getExternalFilesDir (), getCacheDir (), getExternalCacheDir (),

String path = ApplicationContext.getExternalFilesDir(null)+Foldername+filename;
File file = new File(path);
file.getParentFile().mkdir();
 try {
            OutputStream fileOutputStream = new FileOutputStream(file);
            savedBitmap.compress(CompressFormat.JPEG, 100, fileOutputStream);
            fileOutputStream.flush();
            fileOutputStream.close();
        } catch (IOException e2) {
            e2.printStackTrace();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...