Android中保存图片到SD卡不能及时显示的问题

来源:互联网 发布:梦幻西游法宝算法 编辑:程序博客网 时间:2024/05/16 00:34
在做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())));
}
原创粉丝点击