最近项目里需要一个图片上传的功能,本来只要调用系统图库选择图片,通过Intent
就可以获取数据,但是因为需要自定义选择界面,所以只有自己实现一个了。
下面讲下大概的实现思路:
Android的图片资源都是通过Media Provider接口来获取的。Android系统的媒体服务会扫描系统存储的图片文件,然后将相关的元数据保存在数据库中。这些信息是通过ContentProvider暴露出来的,所以只要通过ContentResolver查询相关的表就能找到SD卡上所有文件的信息了。
1 | private List<ImageMediaModel> queryImageMediaModels() { |
ImageMediaModel
1 | public class ImageMediaModel { |
这里是直接获取图片的原始路径,除此之外还可以获取图片目录、缩略图等其他信息。