更新图片到ContentProvider以及从目录中选择一个图片

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();
   ...
  }
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值