package com.mfh.comna.utils.sdimage; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /******************************************* * * 获取手机内存图片 * *******************************************/ public class ImageService { private Context context; public ImageService(Context context) { this.context = context; } /** * @description:通过contentprovider获得sd卡上的图片 * @return:void */ public List<HashMap<String, String>> getImages() { // 指定要查询的uri资源 Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; // 获取ContentResolver ContentResolver contentResolver = context.getContentResolver(); // 查询的字段 String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE }; // 条件 String selection = MediaStore.Images.Media.MIME_TYPE + "=?"; // 条件值(這裡的参数不是图片的格式,而是标准,所有不要改动) String[] selectionArgs = { "image/jpeg" }; // 排序 String sortOrder = MediaStore.Images.Media.DATE_MODIFIED + " desc"; // 查询sd卡上的图片 Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder); List<HashMap<String, String>> imageList = new ArrayList<HashMap<String, String>>(); if (cursor != null) { HashMap<String, String> imageMap; while (cursor.moveToNext()) { imageMap = new HashMap<String, String>(); // 获得图片的id imageMap.put("imageID", cursor.getString(cursor .getColumnIndex(MediaStore.Images.Media._ID))); // 获得图片显示的名称 imageMap.put("imageName", cursor.getString(cursor .getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME))); // 获得图片的信息 imageMap.put( "imageInfo", "" + cursor.getLong(cursor .getColumnIndex(MediaStore.Images.Media.SIZE) / 1024) + "kb"); // 获得图片所在的路径(可以使用路径构建URI) imageMap.put("data", cursor.getString(cursor .getColumnIndex(MediaStore.Images.Media.DATA))); imageList.add(imageMap); } // 关闭cursor cursor.close(); } return imageList; } }