package com.tweetlanes.android.core.widget.urlimageviewhelper; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; import android.os.AsyncTask; import android.provider.ContactsContract; import java.io.InputStream; public class ContactContentUrlDownloader implements UrlDownloader { @Override public void download(final Context context, final String url, final String filename, final UrlDownloaderCallback callback, final Runnable completion) { final AsyncTask<Void, Void, Void> downloader = new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(final Void... params) { try { final ContentResolver cr = context.getContentResolver(); InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(cr, Uri.parse(url)); callback.onDownloadComplete(ContactContentUrlDownloader.this, is, null); return null; } catch (final Throwable e) { e.printStackTrace(); return null; } } @Override protected void onPostExecute(final Void result) { completion.run(); } }; UrlImageViewHelper.executeTask(downloader); } @Override public boolean doNotCache() { return true; } @Override public boolean canDownloadUrl(String url) { return url.startsWith(ContactsContract.Contacts.CONTENT_URI.toString()); } }