Как обновить жанр в mediastore?

#java #android #uri #android-contentresolver #mediastore

#java #Android #uri #android-contentresolver #mediastore

Вопрос:

Я пытаюсь обновить тег жанра аудиофайла.

код

 final Uri genreUri = MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI;

String currentGenreName = MediaStore.Audio.Genres.NAME;

ContentValues values2 = new ContentValues();
values2.put(currentGenreName, genre);

String whereGenre = MediaStore.Audio.Genres._ID   "=?";
String[] whereVal2 = {Long.toString(genreID)};
resolver.update(genreUri, values2, whereGenre, whereVal2);
  
  • жанр: значение из edittext (новое название жанра).
  • GenreId: GenreId из выбранного аудиофайла.

Я не получаю никаких ошибок, но жанр не обновляется в таблице жанров MediaStore.

Другие теги, такие как название, исполнитель, альбом и обложка, обновлены, только жанр не работает.

Я также не могу найти никакой информации об обновлении названия жанра в аудиофайле, мне удалось сделать это только с помощью приведенных выше тегов.

Редактировать

КОД, который я использую для редактирования тегов title, artist, albumname и year, и это работает нормально, поэтому я решил, что должен сделать то же самое для названия жанра, потому что у меня есть идентификатор жанра.

 final Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;


ContentResolver resolver = c.getContentResolver();

String currentTitle     = MediaStore.Audio.Media.TITLE;
String currentArtist    = MediaStore.Audio.Media.ARTIST;
String currentAlbumID   = MediaStore.Audio.Media.ALBUM_ID;
String currentAlbum     = MediaStore.Audio.Media.ALBUM;
String currentGenreID   = MediaStore.Audio.Genres._ID;
String currentGenreName = MediaStore.Audio.Genres.NAME;
String currentAlbumData = MediaStore.Audio.Media.DATA;
String currentYear      = MediaStore.Audio.Media.YEAR;

ContentValues values = new ContentValues();
values.put(currentTitle, title);
values.put(currentArtist, artist);
values.put(currentAlbum, album);
values.put(currentYear, year);

//Update song info.
String where = MediaStore.Audio.Media._ID   "=?";
String[] whereVal = {Long.toString(songID)};
resolver.update(musicUri, values, where, whereVal);
  

Есть причина, по которой он не обновляется?

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

1. Проблема решена??

2. @abhinandansharma Нет, я ничего не могу найти по этому поводу.

3. @abhinandansharma есть идеи, как решить эту проблему?

4. @abhinandansharma Если вы знаете решение, можете ли вы сообщить мне или указать мне правильное направление для решения этой проблемы, потому что я до сих пор не нашел способ заставить его работать.

5. Здравствуйте. У меня есть рабочий код для изменения жанра. Он похож на ваш и работает. Он работает только на pre-Q. В любом случае, я использую MediaStore.Audio.Genres.NAME вместо id в проекции. Я также использую android.provider.MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI вместо MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI применения этих изменений к первому блоку кода сверху. Надеюсь, это поможет.