您的位置:首页 > 移动开发 > Android开发

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

2017-11-30 11:02 537 查看
在做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())));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: