GlideCompose can not load "android.resource://..." resources. To being specific I want to show users installed apps icons in my app that is in this format "android.resource://package_name/id_number" (ex: for youtube android.resource://com.google.android.youtube/2131820554). Usual Glide for android views(Glide.load(...).into(imageView)) works and shows this images but GlideCompose throws an exception that I wrote.
Glide Version: 4.14.2, but tested with 5rc2 too
Glide Compose Version: 1.0.0-alpha.3 but tested with beta01 too
Integration libraries: no
Device/Android Version: android 9, 13 and 14
Issue details / Repro steps / Use case background:
Just get other apps uri with this code:
val packageInfo = context.packageManager.getPackageInfo(packageName, 0)
val appUri = "android.resource://$packageName/${packageInfo.applicationInfo.icon}"
GlideImage(appUri, ...)
We have just a simple GlideModule that sets RequestOptions.format and RequestOptions.diskCacheStrategy based on device specifications. Anyway this GlideModule was present when using glide with imageView(android views) and that was working.
Root cause (1 of 2)
java.io.FileNotFoundException: Resource does not exist: android.resource://com.google.android.youtube/2131820559
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1850)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1773)
at com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher.loadResource(FileDescriptorLocalUriFetcher.java:20)
at com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher.loadResource(FileDescriptorLocalUriFetcher.java:12)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:442)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:399)
at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:211)
at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:101)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:45)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:280)
at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:424)
at java.lang.Thread.run(Thread.java:1012)
at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultPriorityThreadFactory$1.run(GlideExecutor.java:383)
2024-06-24 10:50:50.896 4200-4507 Glide com.farsitel.bazaar I Root cause (2 of 2)
java.io.FileNotFoundException: Resource does not exist: android.resource://com.google.android.youtube/2131820559
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1850)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1773)
at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:20)
at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:11)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:416)
at com.bumptech.glide.load.engine.SourceGenerator.onLoadFailedInternal(SourceGenerator.java:223)
at com.bumptech.glide.load.engine.SourceGenerator$1.onLoadFailed(SourceGenerator.java:108)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:167)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:154)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:50)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:442)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:399)
at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:211)
at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:101)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:45)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:95)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:88)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:280)
at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:424)
at java.lang.Thread.run(Thread.java:1012)
at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultPriorityThreadFactory$1.run(GlideExecutor.java:383)
GlideCompose can not load "android.resource://..." resources. To being specific I want to show users installed apps icons in my app that is in this format "android.resource://package_name/id_number" (ex: for youtube android.resource://com.google.android.youtube/2131820554). Usual Glide for android views(Glide.load(...).into(imageView)) works and shows this images but GlideCompose throws an exception that I wrote.
Glide Version: 4.14.2, but tested with 5rc2 too Glide Compose Version: 1.0.0-alpha.3 but tested with beta01 too
Integration libraries: no
Device/Android Version: android 9, 13 and 14
Issue details / Repro steps / Use case background: Just get other apps uri with this code:
We have just a simple GlideModule that sets RequestOptions.format and RequestOptions.diskCacheStrategy based on device specifications. Anyway this GlideModule was present when using glide with imageView(android views) and that was working.
Layout Compose:
Stack trace / LogCat: