Android中下载的图片不能显示,开机后才能显示(大全)
2016-03-16 17:18
447 查看
之所以要补充这次,是因为第一次写的并没有解决我的bug,真正的解决方法在分割线下
问题情景:
我自己做了个云相册,最重要的功能就是上传下载功能,下载的时候我会把下载的照片放到一个新建的文件夹下,之前测试的时候,隐藏了一个bug,今天把新建文件下的照片都删除了,再次下载时就看不到照片了,只有重启以后才能看到照片,新建的文件夹才会出现,继续下载都会在文件夹下显示,无需重启了,只有初次下载时会这样,于是乎,我在网上搜了一番,网上众说纷纭,最终解决了问题,现在把解决问题的过程记录下,也算是自己的经验分享吧,需要的直接拿走,有用请点赞啦~~~
解决办法:
下面贴出这个函数的源码:
我是在下载图片后直接添加了上面的那句代码就好使了,网上有的说还需要发广播,反正我是没有发,也达到我的目的了,因此大家则需而用吧~~~
——————————-我是分割线————————————–
上边的那个bug隐藏得很深,原以为解决了问题,却发现是自己大意了,问题根本没有解决,又被深度隐藏起来了,无奈,又得继续寻找解决办法了,
本来以为上面的已经解决了问题,下面找到了某位同学的博客是这样的:
博客地址:/article/1832549.html
我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到。这是因为SD卡并没有重新挂载,图库也无法把这张图片加载进去,解决这个问题非常简单,只需要我们模拟一个广播,使SD卡重新挂载即可!方法如下:
其实上边这位同学的解决办法并没有什么不妥,但是我的调试系统是4.4.2,而Android4.4不允许这样发广播,会报异常,是因为Android4.4限制了权限,于是乎,又搜索了一番,建议这么做:
这样才真正的解决了我的问题,真是历尽千辛万苦啊,上边的函数的第二个参数一定要写对啊,我一开始也用了这个方法,但是参数没有给对,一直没效果,我就绕过了这个方法,迂回了好大一圈,还是它解决的问题,所以一定要留意哦~~~
问题情景:
我自己做了个云相册,最重要的功能就是上传下载功能,下载的时候我会把下载的照片放到一个新建的文件夹下,之前测试的时候,隐藏了一个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);
这样才真正的解决了我的问题,真是历尽千辛万苦啊,上边的函数的第二个参数一定要写对啊,我一开始也用了这个方法,但是参数没有给对,一直没效果,我就绕过了这个方法,迂回了好大一圈,还是它解决的问题,所以一定要留意哦~~~
相关文章推荐
- Ubuntu10.04下Android开发环境搭建
- Android Activity的生命周期简单总结
- Android开发之执行定时任务AlarmManager,Timer,Thread
- 6_Android的Drawable
- 【Android】Error: Expected resource of type styleable [ResourceType]
- Android openh264 编解码重点记录
- Android程序几种三方框架的使用小.
- Android手机之间的蓝牙通信的代码和原理
- android中root用户无法往某些目录写入文件解决方法
- 【Android进阶】ScrollView内嵌套ListView时禁止ListView的滚动
- Android中ContentProvider组件数据共享
- android四大组件之一Service
- 【转】你是不是也被Android Private Libraries、Referenced Libraries、android Dependency搞晕了~~
- [Android]自定义CheckableImageButton
- Android 四种线程池
- android 提高性能点
- Android 将ARGB图片转换为灰度图
- Android系统下的动态Dex加载
- android下载文件并打开
- Android Studio使用相关博客汇总