http://blog.csdn.net/xiaanming/article/details/8990627
http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/
http://www.eoeandroid.com/thread-323723-1-1.html
这个三个博客是我搜索到比较有用的
private static String getFilePathByContentResolver(Context context, Uri uri) {
if (null == uri) {
return null;
}
Cursor c = context.getContentResolver().query(uri, null, null, null, null);
String filePath = null;
if (null == c) {
throw new IllegalArgumentException(
"Query on " + uri + " returns null result.");
}
try {
if ((c.getCount() != 1) || !c.moveToFirst()) {
} else {
filePath = c.getString(
c.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA));
}
} finally {
c.close();
}
return filePath;
}
public static void saveImageToGallery(Context context, Bitmap bmp) {
ContentResolver cr = context.getContentResolver();
String path = MediaStore.Images.Media.insertImage(cr, bmp, "", "");
if (path != "" && path != null) {
Uri result = Uri.parse(path);
String str = getFilePathByContentResolver(context, result);
//mabye not necessary
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(str)));
} else {
// 如果插入相册失败
File appDir = new File(Environment.getExternalStorageDirectory(), "DCIM/Camera");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
}
}