Запись в папку на Android

Есть кусок кода, который записывает аудиофайл в папку Music на устройстве. Он работает для Android Q и выше. Для версий ниже выдает ошибку из-за строки MediaStore.MediaColumns.RELATIVE_PATH. Как сделать чтобы и для версий ниже все работало? Не очень понимаю как правильно передать параметры.

try {
    ContentResolver contentResolver = context.getContentResolver();
    ContentValues contentValues = new ContentValues();
    contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, recordedFileName);
    contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
    contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_MUSIC + File.separator + AppConstants.dirName);
    Uri item = contentResolver.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, contentValues);
    FileOutputStream fos;
    fos = (FileOutputStream) contentResolver.openOutputStream(Objects.requireNonNull(item));
    audioWrite(urlPath, fos);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

Ошибка ссылается на строку Uri item = contentResolver.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, contentValues);

> java.lang.NullPointerException: Attempt to invoke virtual method 'int
> java.lang.String.lastIndexOf(int)' on a null object reference at
> android.os.Parcel.readException(Parcel.java:1546) at
> android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
> at
> android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
> at
> android.content.ContentProviderProxy.insert(ContentProviderNative.java:475)
> at android.content.ContentResolver.insert(ContentResolver.java:1207)
> at
> myapp.audiorecorder.utils.AudioRecorder.createFileAndroidQ(AudioRecorder.java:81)
> at
> myapp.audiorecorder.utils.AudioRecorder.lambda$createFile$0$AudioRecorder(AudioRecorder.java:57)
> at
> myapp.audiorecorder.utils.-$$Lambda$AudioRecorder$bQvun68TZbcsJBbHjMRDPM4QY2A.run(lambda)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
> at java.lang.Thread.run(Thread.java:818)

Ответы (0 шт):