private void downloadImage(String imageUrl) throws InterruptedException {
InputStream inputStream = null;
OutputStream outStream = null;
try {
URL url = new URL(imageUrl);
inputStream = url.openStream();
String filepath = getFilePath(imageUrl);
String filename = getFileName(imageUrl);
File imageDirectory = new File(filepath);
File file = new File(filepath + filename);
if (file.exists() == false) {
String path = imageDirectory.toString().toLowerCase();
String name = imageDirectory.getName().toLowerCase();
ContentValues values = new ContentValues(7);
values.put(Images.Media.TITLE, filename);
values.put(Images.Media.DISPLAY_NAME, filename);
values.put(Images.Media.DATE_TAKEN, new Date().getTime());
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.ImageColumns.BUCKET_ID, path.hashCode());
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name);
values.put("_data", filepath + filename);
ContentResolver contentResolver = getApplicationContext().getContentResolver();
Uri uri = contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, values);
outStream = contentResolver.openOutputStream(uri);
byte[] buffer = new byte[1024];
int count;
while ((count = inputStream.read(buffer)) != -1) {
if (Thread.interrupted() == true) {
String functionName = Thread.currentThread().getStackTrace()[2].getMethodName() + "()";
throw new InterruptedException("The function " + functionName + " was interrupted.");
}
outStream.write(buffer, 0, count);
}
}
}
catch (IOException e) {
}
finally {
if (inputStream != null) {
try {
inputStream.close();
}
catch (IOException e) {
}
}
if (outStream != null) {
try {
outStream.close();
}
catch (IOException e) {
}
}
}
}
2.
final int CHOOSE_AN_IMAGE_REQUEST = 2910;
String directory = "/sdcard/someDirectory/";
Uri uri = Images.Media.INTERNAL_CONTENT_URI.buildUpon().appendQueryParameter("bucketId", getBucketId(directory)).build();
Intent intent = getIntent();
intent.setData(uri);
intent.setAction(Intent.ACTION_PICK);
startActivityForResult(Intent.createChooser(intent, "Choose a Viewer"), CHOOSE_AN_IMAGE_REQUEST);
public static String getBucketId(String bucketName) {
bucketName = bucketName.toLowerCase();
if (bucketName.charAt(bucketName.length() - 1) == '/') {
bucketName = bucketName.substring(0, bucketName.length() - 1);
}
return Integer.toString(bucketName.hashCode());
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == CHOOSE_AN_IMAGE_REQUEST) {
Uri chosenImageUri = data.getData();
...
}
}
}