在做android图片保存到相册功能时,不能在相册中及时看到保存的图片。需要扫描某个文件或者扫描整个SD卡。
步骤:
1、保存图片到相册:
ContentResolver cr = mContext.getContentResolver();
String url = MediaStore.Images.Media.insertImage(cr, bitmap, "", "");
返回的是保存图片的路径url(形式为content://...)。(这里需要转化为路径形式 storage/...)
写一个方法uriToPath(String urlString):
/**
* 将uri转换成手机的图片Media的绝对路径
*
* @param urlString
* @return
*/
private static String uriToPath(String urlString) {
if (null == urlString || "".equals(urlString)) {
return "";
}
String path = "";
Uri uri = Uri.parse(urlString);
Cursor cur = GlobalUtils.getAppContext().getContentResolver().query(uri, null, null, null, null);
if (null != cur && cur.moveToNext()) {
int index = cur.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cur.moveToFirst();
path = cur.getString(index);
}
if (null != cur) {
cur.close();
}
return path;
}
2、保存图片之后对这个文件进行扫描:
fileScan(uriToPath(url))...
/**
* 扫描某个文件
*
* @param filePath
*/
public static void fileScan(String filePath) {
Uri data = Uri.parse("file://" + filePath);
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data));
}
3、另外提供一种扫描整个SD卡的方法:
/**
* 扫描整个SD卡
*
*/
public static void sdScan() {
mContext.sendBroadcast(
new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
}