MuntashirAkon/AppManager · warning · IOException
No album art found
Error message
No album art found
What it means
Thrown by ThumbnailUtilsCompat.createAudioThumbnail when MediaMetadataRetriever.getEmbeddedPicture() returns null — the audio file simply contains no embedded artwork — or when no bitmap could be produced from it.
Solutions
- Handle the IOException and display a default album-art placeholder
- Pre-check getEmbeddedPicture() != null before requesting a thumbnail
- Read tag metadata separately (e.g. via a tags library) and fall back to folder art or online lookup
Example fix
// before
Bitmap thumb = ThumbnailUtilsCompat.createAudioThumbnail(file, size);
// after
Bitmap thumb;
try {
thumb = ThumbnailUtilsCompat.createAudioThumbnail(file, size);
} catch (IOException e) {
thumb = defaultAlbumArt; // placeholder for files without embedded art
} Defensive patterns
Strategy: try-catch
Validate before calling
MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(path); boolean hasArt = mmr.getEmbeddedPicture() != null; mmr.release(); if (!hasArt) return defaultAlbumArt;
Try / catch
Bitmap art;
try {
art = ThumbnailUtilsCompat.createAudioThumbnail(file, size);
} catch (IOException e) {
art = defaultAlbumArt; // files without embedded art are normal
} Prevention
- Treat missing art as expected, not an error
- Prefer pre-checking artwork presence
- Provide a default artwork asset
- Batch-skip tagless files during scans
When it happens
Trigger: Calling createAudioThumbnail on an audio file without embedded album art (raw == null), e.g. a plain WAV/FLAC stream or a stripped MP3.
Common situations: Media-store sweeps over folders with non-music audio (voice notes, ringtones); files whose artwork was removed by a tag editor; users expecting thumbnails for all audio files.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- Failed to create thumbnail
- ADB command did not produce
- ADB daemon not running.
- ADB restore is requested but there are no .ab files.
- Alias exists.
AI-assisted analysis of MuntashirAkon/AppManager@0152f468fc (2026-09-12).
Data as JSON: /api/errors/85bf1a24a9fbcaf6.
Report an issue: GitHub.
Appendix: source
Thrown at app/src/main/java/io/github/muntashirakon/AppManager/compat/ThumbnailUtilsCompat.java:56
* @throws IOException If any trouble was encountered while generating or loading the thumbnail, or if
* {@link CancellationSignal#cancel()} was invoked.
*/
public static @NonNull Bitmap createAudioThumbnail(@NonNull Context context, @NonNull Uri uri, @NonNull Size size,
@Nullable CancellationSignal signal) throws IOException {
// Checkpoint before going deeper
if (signal != null) signal.throwIfCanceled();
try (MediaMetadataRetriever retriever = new MediaMetadataRetriever()) {
retriever.setDataSource(context, uri);
final byte[] raw = retriever.getEmbeddedPicture();
if (raw != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(raw, 0, raw.length);
return getThumbnail(bitmap, size, true);
}
} catch (RuntimeException e) {
throw new IOException("Failed to create thumbnail", e);
}
throw new IOException("No album art found");
}
/**
* Create a thumbnail for given video file.
* <p>
* This method should only be used for files that you have direct access to;
* if you'd like to work with media hosted outside your app, consider using
* {@link ContentResolver#loadThumbnail(Uri, Size, CancellationSignal)}
* which enables remote providers to efficiently cache and invalidate
* thumbnails.
*
* @param context The Context to use when resolving the video Uri.
* @param uri The video file.
* @param size The desired thumbnail size.
* @throws IOException If any trouble was encountered while generating or
* loading the thumbnail, or if
* {@link CancellationSignal#cancel()} was invoked.
*/View on GitHub (pinned to 0152f468fc)