Issue 1:
I'm using Glide 3.7.0 to load images from local storage to a ListView in an appwidget. Here's a part of my code:

BitmapRequestBuilder builder =
Glide.with(context)
.load(pathName) // absolute path of local image file
.asBitmap()
.override(width, height)
.centerCrop();
FutureTarget futureTarget = builder.into(width, height);
try {
remoteViews.setImageViewBitmap(R.id.iv_image_attachment, (Bitmap) futureTarget.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}

I didn't use Glide.with(context).asBitmap().into(AppWidgetTarget) because it's useless to load image for ListView in appwidget. Anyway, above code will be executed in RemoteViewsFactory#getViewAt(int position) inside my custom RemoteViewsService. It can work well at most time, but sometimes I will get following error info with images not loaded:

java.lang.SecurityException: ConnectivityService: Neither user 10214 nor current process has android.permission.ACCESS_NETWORK_STATE.
at android.os.Parcel.readException(Parcel.java:1620)
at android.os.Parcel.readException(Parcel.java:1573)
at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:1029)
at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:667)
at com.bumptech.glide.manager.DefaultConnectivityMonitor.isConnected(DefaultConnectivityMonitor.java:55)
at com.bumptech.glide.manager.DefaultConnectivityMonitor.register(DefaultConnectivityMonitor.java:38)
at com.bumptech.glide.manager.DefaultConnectivityMonitor.onStart(DefaultConnectivityMonitor.java:61)
at com.bumptech.glide.manager.ApplicationLifecycle.addListener(ApplicationLifecycle.java:15)
at com.bumptech.glide.RequestManager.<init>(RequestManager.java:81)
at com.bumptech.glide.RequestManager.<init>(RequestManager.java:53)
at com.bumptech.glide.manager.RequestManagerRetriever.getApplicationManager(RequestManagerRetriever.java:73)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:95)
at com.bumptech.glide.Glide.with(Glide.java:629)

It seems that this exception is caused by checking network state without corresponding permission. I didn't request ACCESS_NETWORK_STATUS permission in AndroidManifest.xml indeed, but my app really doesn't need this permission. In my user case, Glide will only be used to load images from local storage so I think it should not do such kind of operation like checking network state. Maybe it's designed for loading images from everywhere including Internet(OK, perhaps this is most important user case), but I think it should handle this mistake if it's not asked to load images from Internet, and then load images correctly.

Thank you.

Issue 2:
Glide Version: 4.7.1

Device/Android Version: HTC Desire 820 5.0.2

Issue details / Repro steps / Use case background:

I want to show the video thumbnail with mp4 source from server and it work with default diskCacheStrategy.

But the Android Profiler - Network Profiler show Glide load whole video source, it take too much time.

So I set diskCacheStrategy to DiskCacheStrategy.RESOURCE then I got FileNotFoundException.

Not only DiskCacheStrategy.RESOURCE but also DiskCacheStrategy.NONE.

Glide load line / GlideModule (if any) / list Adapter code (if any):

Success

GlideApp.with(context)
.load(url) // .mp4
.into(imageVIew)

Failure

GlideApp.with(context)
.load(url) // .mp4
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(imageVIew)

Stack trace / LogCat:

Root cause (1 of 1)
java.io.FileNotFoundException: No content provider: private url
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1131)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:986)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:913)
at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:22)
at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:13)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:418)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:379)
at com.bumptech.glide.load.engine.SourceGenerator.onDataReady(SourceGenerator.java:112)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:135)
at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:60)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:99)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:302)
at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:272)
at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:233)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)