使用android-support-v4.jar中的加载器(Loader)来实现获取本机中所有图片,关于这个包在以前的文章中也提到,是一个非常有用的包,关于这个包的详细信息请大家查看官方文档:。
为攸县等地区用户提供了全套网页设计制作服务,及攸县网站建设行业解决方案。主营业务为成都做网站、网站制作、攸县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
关于加载器(Loader)是在Android3.0中才开始引进并使用的,Android3.0以前的版本中要想使用加载器则需要用android-support-v4.jar来实现,我这个示例是基于Android2.2的。加载器(Loader)有什么作用呢?官方文档介绍是:它能够使用得在activity或fragment中异步加载数据变得更加容易,它具有以下的特点:
1.它们对每一个Activity和Fragment都是有效的。
2.它们提供了一种异步加载数据的能力。
3.它们监视数据源并且数据内容改变时将会传递新的结果。
4.当配置改变而被重新创建时,它们自动的会重连到上一个加载器的游标,然而,它们不需要重新查询数据。
1.拍照 (对于7.0以上的版本,不在允许直接访问uri)
`
若不指定输出路径intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通过
`
可以拿到uri,但获得的图片是被压缩过的。若指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);输出路径,则此处的intent为null,但可以使用我们存的uri读取照片,此时的照片没有被压缩。
2.从相册中读取照片, 方法:
`
`
即使设置 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity));输出路径,仍然不能从此路径中读取,只能在onActivityForResult()中通过event.uri = intent.getData();方式获得图片uri。
此种现象也好理解,拍照时产生新的图片,自然可根据设置的uri进行图片保存,而读取相册时,图片已经在目录中不能转移到自己设定的uri中。
Androidmanifest.xml中
`
在 res/xml/provider_paths.xml
`
?xml version="1.0" encoding="utf-8"?
paths
external-path name="JDTobs" path=""/
files-path name="name" path="path" /
cache-path name="name" path="path" / external-path name="name" path="path" /
external-files-path name="name" path="path" /
external-cache-path name="name" path="path" / /paths `
读取uri
从数据库读取二进制文件
然后从二进制读取的图片信息:
byte[] picData = cursor.getBlob(cursor.getColumnIndex("pic_data"));
bitmap.setImageBitmap(BitmapFactory.decodeByteArray(picData, 0, picData.length));