package com.bumptech.glide.manager; import android.content.Context; import android.content.pm.PackageManager; import android.support.annotation.NonNull; /** * A factory class that produces a functional {@link com.bumptech.glide.manager.ConnectivityMonitor} * if the application has the {@code android.permission.ACCESS_NETWORK_STATE} permission and a no-op * non functional {@link com.bumptech.glide.manager.ConnectivityMonitor} if the app does not have * the required permission. */ public class DefaultConnectivityMonitorFactory implements ConnectivityMonitorFactory { @NonNull public ConnectivityMonitor build( @NonNull Context context, @NonNull ConnectivityMonitor.ConnectivityListener listener) { final int res = context.checkCallingOrSelfPermission("android.permission.ACCESS_NETWORK_STATE"); final boolean hasPermission = res == PackageManager.PERMISSION_GRANTED; if (hasPermission) { return new DefaultConnectivityMonitor(context, listener); } else { return new NullConnectivityMonitor(); } } }