#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. Вам удалось найти решение этой проблемы?