#android #kotlin
#Android #котлин
Вопрос:
Я пытаюсь прочитать все песни из внешнего хранилища с помощью ContentResolver?.запрос(), но каждый раз, когда я запускаю приложение, мой запрос пуст. Он просто переходит от if(ResultSet.moveToFirst()) к ResultSet?.закрыть(). Вот мой код и экран отладки ниже:
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment val view = inflater.inflate(R.layout.fragment_tracks_tab, container, false) permissionSetup() val uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI val selection = MediaStore.Audio.Media.IS_MUSIC " != 0" val projection = arrayOflt;Stringgt;( MediaStore.Audio.AudioColumns._ID, MediaStore.Audio.AudioColumns.TITLE, MediaStore.Audio.ArtistColumns.ARTIST ) val resultSet : Cursor? = activity?.applicationContext?.contentResolver?.query(uri, projection, selection, null, null) if (resultSet != null) { if(resultSet.moveToFirst()) { do { val url = resultSet.getString(0) val artist = resultSet.getString(1) val title = resultSet.getString(2) listSong.add(SongInfo(title, artist, url)) } while (resultSet.moveToNext()) } } resultSet?.close()
введите описание изображения здесь
Если это важно, я пишу в фрагменте вкладки, и мое эмуляторное устройство-Pixel 4XL с Android 11.0 API 30. Пожалуйста, помогите мне, я уже перепробовал все, что смог найти.
Комментарии:
1.
using contentResolver?.query()
? Для начала вы должны сказать, к кому хотите обратиться с запросом. Инструмент, который вы используете для получения информации, менее релевантен, чем информация о том, от какого поставщика вы хотите получить некоторую информацию.