Android ContentResolver.insert() вызывает исключение NullPointerException

#android #kotlin #nullpointerexception #insert #android-contentresolver

Вопрос:

Я пытаюсь добавить некоторые аудиофайлы ( m4a, mp3, … ) в аудиоколлекцию MediaStore, чтобы другие музыкальные приложения могли их перечислять. Чтобы все было просто, я просто скопировал то, что написано в документации. ( https://developer.android.com/training/data-storage/shared/media )

Поэтому в методе activities onCreate() я написал следующее:

 val resolver = applicationContext.contentResolver

val audioCollection =
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        MediaStore.Audio.Media.getContentUri(
            MediaStore.VOLUME_EXTERNAL_PRIMARY
        )
    } else {
        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
    }

val songDetails = ContentValues().apply {
    put(MediaStore.Audio.Media.DISPLAY_NAME, "Test Track")
}

resolver.insert(audioCollection, songDetails)
 

Но каждый раз, когда я начинаю его, я получаю следующее:

  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.lastIndexOf(int)' on a null object reference
        at android.os.Parcel.createException(Parcel.java:1972)
        at android.os.Parcel.readException(Parcel.java:1934)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
        at android.content.ContentResolver.insert(ContentResolver.java:1593)
 

Манифест объявляет разрешение на ЧТЕНИЕ, ЗАПИСЬ, а также разрешение MANAGE_EXTERNAL_STORAGE и включает эти разрешения на хранение в настройках приложения Android на моем устройстве.

Комментарии:

1. Отображаемое имя с допустимым расширением, пожалуйста.

2. Ах, да, конечно.

3. Вам удалось найти решение этой проблемы?