public class AuthImageDownloader extends BaseImageDownloader {
public static final String TAG = AuthImageDownloader.class.getName();
public AuthImageDownloader(Context context, int connectTimeout, int readTimeout) {
super(context, connectTimeout, readTimeout);
}
@Override
protected InputStream getStreamFromNetwork(String imageUri, Object extra) throws IOException {
URL url = null;
try {
url = new URL(imageUri);
} catch (MalformedURLException e) {
Log.e(TAG, e.getMessage(), e);
}
HttpURLConnection http = null;
if (Scheme.ofUri(imageUri) == Scheme.HTTPS) {
trustAllHosts();
HttpsURLConnection https = (HttpsURLConnection) url
.openConnection();
https.setHostnameVerifier(DO_NOT_VERIFY);
http = https;
http.connect();
} else {
http = (HttpURLConnection) url.openConnection();
}
http.setConnectTimeout(connectTimeout);
http.setReadTimeout(readTimeout);
return new FlushedInputStream(new BufferedInputStream(
http.getInputStream()));
}
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
/**
* Trust every server - dont check for any certificate
*/
private static void trustAllHosts() {
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] x509Certificates,
String s) throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] x509Certificates,
String s) throws java.security.cert.CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
} };
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context)
config.threadPriority(Thread.NORM_PRIORITY - 2)
config.denyCacheImageMultipleSizesInMemory()
config.diskCacheFileNameGenerator(new Md5FileNameGenerator())
config.diskCacheSize(50 * 1024 * 1024)
config.tasksProcessingOrder(QueueProcessingType.LIFO)
config.writeDebugLogs()
config.imageDownloader(new AuthImageDownloader(context,5000,5000))
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build())
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_stub)
.showImageForEmptyUri(R.mipmap.ic_empty)
.showImageOnFail(R.mipmap.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(20))
.build()