MediaStore获得系统相册列表

来源:互联网 发布:开淘宝店需要进货吗 编辑:程序博客网 时间:2024/06/05 21:53
public class LocaImageGetter {private static final Uri EXTERNAL_IMAGES_URI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;private static final String[] ALBUM_PROJECTION = {MediaStore.Images.Media.BUCKET_ID,MediaStore.Images.Media.BUCKET_DISPLAY_NAME,MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, };private static final int BUCKET_ID=0;private static final int BUCKET_DISPLAY_NAME=1;private static final int _ID=2;private static final int DATA=3;private static final String ALBUM_SELECTION = "_size> 20000";private final ContentResolver mContentResolver;public LocaImageGetter(ContentResolver cotentResolver) {mContentResolver = cotentResolver;}public List<Album> getImageAlbums() {List<Album> albums=new ArrayList<Album>();Set<String> albumKeys=new HashSet<String>();Cursor cursor = mContentResolver.query(EXTERNAL_IMAGES_URI,ALBUM_PROJECTION, ALBUM_SELECTION, null, null);Album album = null;String bucket_id = null;Image image = null;try {while (cursor.moveToNext()) {image = new Image();image.imageID = cursor.getInt(_ID);image.imageFile=cursor.getString(DATA);image.imagePath = "file://" + cursor.getString(DATA);//供universal-image-loader使用的路径bucket_id = cursor.getString(BUCKET_ID);if (!albumKeys.contains(bucket_id)) {album = new Album();album.name = cursor.getString(BUCKET_DISPLAY_NAME);album.images = new ArrayList<Image>();album.images.add(image);albums.add(album);albumKeys.add(bucket_id);} else {album.images.add(image);}}} finally {albumKeys=null;cursor.close();}return albums;}}
public class Album {public String name;public List<Image> images;}public class Image {public int imageID;                //图片IDpublic String imagePath;           //图片路径public String imageFile;}


                                             
0 0