#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
применения этих изменений к первому блоку кода сверху. Надеюсь, это поможет.