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

Android中下载的图片不能显示,开机后才能显示(大全)

2016-03-16 17:18 447 查看
之所以要补充这次,是因为第一次写的并没有解决我的bug,真正的解决方法在分割线下

问题情景:

我自己做了个云相册,最重要的功能就是上传下载功能,下载的时候我会把下载的照片放到一个新建的文件夹下,之前测试的时候,隐藏了一个bug,今天把新建文件下的照片都删除了,再次下载时就看不到照片了,只有重启以后才能看到照片,新建的文件夹才会出现,继续下载都会在文件夹下显示,无需重启了,只有初次下载时会这样,于是乎,我在网上搜了一番,网上众说纷纭,最终解决了问题,现在把解决问题的过程记录下,也算是自己的经验分享吧,需要的直接拿走,有用请点赞啦~~~

解决办法:

try {
MediaStore.Images.Media.insertImage(getContentResolver(), Constants.downloadPath + File.separator
+ info.getFileName(), "", "");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


下面贴出这个函数的源码:

/**
* Insert an image and create a thumbnail for it.
*
* @param cr The content resolver to use
* @param imagePath The path to the image to insert
* @param name The name of the image
* @param description The description of the image
* @return The URL to the newly created image
* @throws FileNotFoundException
*/
public static final String insertImage(ContentResolver cr, String imagePath,
String name, String description) throws FileNotFoundException {
// Check if file exists with a FileInputStream
FileInputStream stream = new FileInputStream(imagePath);
try {
Bitmap bm = BitmapFactory.decodeFile(imagePath);
String ret = insertImage(cr, bm, name, description);
bm.recycle();
return ret;
} finally {
try {
stream.close();
} catch (IOException e) {
}
}
}


我是在下载图片后直接添加了上面的那句代码就好使了,网上有的说还需要发广播,反正我是没有发,也达到我的目的了,因此大家则需而用吧~~~

——————————-我是分割线————————————–

上边的那个bug隐藏得很深,原以为解决了问题,却发现是自己大意了,问题根本没有解决,又被深度隐藏起来了,无奈,又得继续寻找解决办法了,

本来以为上面的已经解决了问题,下面找到了某位同学的博客是这样的:

博客地址:/article/1832549.html

我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到。这是因为SD卡并没有重新挂载,图库也无法把这张图片加载进去,解决这个问题非常简单,只需要我们模拟一个广播,使SD卡重新挂载即可!方法如下:

/**
* 发送广播,重新挂载SD卡
*/
private void sendBroadCaseRemountSDcard() {
Intent intent = new Intent();
// 重新挂载的动作
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
// 要重新挂载的路径
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);
}


其实上边这位同学的解决办法并没有什么不妥,但是我的调试系统是4.4.2,而Android4.4不允许这样发广播,会报异常,是因为Android4.4限制了权限,于是乎,又搜索了一番,建议这么做:

MediaScannerConnection.scanFile(this, new String[]{info.getFilePath()}, null,null);


这样才真正的解决了我的问题,真是历尽千辛万苦啊,上边的函数的第二个参数一定要写对啊,我一开始也用了这个方法,但是参数没有给对,一直没效果,我就绕过了这个方法,迂回了好大一圈,还是它解决的问题,所以一定要留意哦~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: