diff --git a/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java index f9704e5..8f67236 100644 --- a/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java @@ -41,9 +41,11 @@ import org.jaudiotagger.audio.exceptions.CannotWriteException; import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException; import org.jaudiotagger.audio.exceptions.ReadOnlyFileException; +import org.jaudiotagger.audio.flac.metadatablock.MetadataBlockDataPicture; import org.jaudiotagger.tag.FieldKey; import org.jaudiotagger.tag.Tag; import org.jaudiotagger.tag.TagException; +import org.jaudiotagger.tag.flac.FlacTag; import org.jaudiotagger.tag.images.Artwork; import org.jaudiotagger.tag.images.ArtworkFactory; @@ -317,7 +319,22 @@ protected String[] doInBackground(LoadingInfo... params) { deletedArtwork = true; } else if (artwork != null) { tag.deleteArtworkField(); - tag.setField(artwork); + if (tag instanceof FlacTag && !artwork.isLinked()) { + // Workaround for a JAudioTagger bug + MetadataBlockDataPicture field = new MetadataBlockDataPicture( + artwork.getBinaryData(), + artwork.getPictureType(), + artwork.getMimeType(), + artwork.getDescription(), + artwork.getWidth(), + artwork.getHeight(), + 0, + 0 + ); + tag.setField(field); + } else { + tag.setField(artwork); + } wroteArtwork = true; } }