title: android-ImageView保存图片到手机并更新媒体库
tags:

  • android
    categories:
  • 安卓

android-ImageView保存图片到手机并更新媒体库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//调用执行
imageview.setDrawingCacheEnabled(true);
Bitmap imageBitmap = imageview.getDrawingCache();
if (imageBitmap != null) {
new SaveImageTask().execute(imageBitmap);
}




private class SaveImageTask extends AsyncTask<Bitmap, Void, String> {
@Override
protected String doInBackground(Bitmap... params) {
String result = getResources().getString(R.string.save_picture_failed);
try {
String sdcard = Environment.getExternalStorageDirectory().toString();
// String sdcard = Environment.getDataDirectory().toString();
// String sdcard = getBaseContext().getFilesDir().toString();;
File fileDir=new File(getApplication().getExternalCacheDir(),"images");
System.out.println(sdcard);

// File file = new File(sdcard + "/DCIM");
file = new File(sdcard+ "/Download");
if (!file.exists()) {
file.mkdirs();
}
fileName = "IMG_" + new Date().getTime() + ".jpg";
File imageFile = new File(file.getAbsolutePath(),fileName);
FileOutputStream outStream = null;
outStream = new FileOutputStream(imageFile);
Bitmap image = params[0];
image.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
result = getResources().getString(R.string.save_picture_success, file.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT).show();

share_code_img.setDrawingCacheEnabled(false);

//后面两句是重点不然不会再媒体库中显示(或者重启后显示)
try {
MediaStore.Images.Media.insertImage(getBaseContext().getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
getBaseContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath()+fileName)));
}
}