获取手机本地的全部图片的3种方式

1. 获取手机本地的全部图片的3种方式, 调用方法之前要先判断读写权限

不多说了,直接上代码

 

public class GetGalleryPhotosUtils {

    /****
     * //获取所有图片存入list集合返回,MediaStore.Images.Media.DATA中的Images
     * @param resolver     getContentResolver()
     *                            imaPathList = getGalleryPhotos(getContentResolver());
     * @return        /storage/emulated/0/Pictures/Screenshots/Screenshot_20200401_112209_com.tencent.trtc.jpg
     */
    public static ArrayList getGalleryPhotos(ContentResolver resolver) {
        if (resolver == null){
            return null;
        }
        ArrayList galleryList = new ArrayList();
        try {
            //获取所在相册和相册id
            final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID};
            //按照id排序
            final String orderBy = MediaStore.Images.Media._ID;

            //相当于sql语句默认升序排序orderBy,如果降序则最后一位参数是是orderBy+" desc "
            Cursor imagecursor =
                    resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
                            null, orderBy);

            //从数据库中取出图存入list集合中
            if (imagecursor != null && imagecursor.getCount() > 0) {
                while (imagecursor.moveToNext()) {
                    int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
//                    Log.d("tgw7", "getGalleryPhotos: " + dataColumnIndex);
                    //  //   file:///storage/emulated/0/Pictures/Screenshots/Screenshot_20200401_112209_com.tencent.trtc.jpg
//                String path = "file://" + imagecursor.getString(dataColumnIndex);
                    String path =  imagecursor.getString(dataColumnIndex);
                    LogUtils.e(  "获取手机图片 getGalleryPhotos  path: " + path);
                    galleryList.add(path);

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 进行反转集合
        Collections.reverse(galleryList);
        return galleryList;
    }


    /****
     * //获取所有图片存入list集合返回,MediaStore.Images.Media.DATA中的Images
     * @param
     * @return        /storage/emulated/0/Pictures/Screenshots/Screenshot_20200401_112209_com.tencent.trtc.jpg
     */
    public static List  getCalleryPhotos2(Context context){
        if (context == null){
            return null;
        }
        List  imaPathList = new ArrayList<>();
        Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        ContentResolver mContentResolver = context
                .getContentResolver();
        // 只查询jpeg和png的图片
        Cursor mCursor = mContentResolver.query(mImageUri, null,
                MediaStore.Images.Media.MIME_TYPE + "=? or "
                        + MediaStore.Images.Media.MIME_TYPE + "=?",
//                        new String[]{"image/jpeg", "image/png"},
                new String[]{"image/gif"},
                MediaStore.Images.Media.DATE_MODIFIED);

        Cursor mCursor2 = mContentResolver.query(mImageUri, null,
                MediaStore.Images.Media.MIME_TYPE + "=? or "
                        + MediaStore.Images.Media.MIME_TYPE + "=?",
                new String[]{"image/jpeg", "image/png"},
                MediaStore.Images.Media.DATE_MODIFIED);
        Log.e("TAG", mCursor.getCount() + "");
        while (mCursor.moveToNext()) {
            // 获取图片的路径
            String path = mCursor.getString(mCursor
                    .getColumnIndex(MediaStore.Images.Media.DATA));
            imaPathList.add(path);
        }

        while (mCursor2.moveToNext()) {
            // 获取图片的路径
            String path = mCursor2.getString(mCursor2
                    .getColumnIndex(MediaStore.Images.Media.DATA));
            imaPathList.add(path);
        }
        Collections.reverse(imaPathList);
        mCursor.close();
        mCursor2.close();
        return imaPathList;
    }


    private static ContentResolver mContentResolver;
    /****
     * //获取所有图片存入list集合返回,MediaStore.Images.Media.DATA中的Images
     * @param
     * @return        /storage/emulated/0/Pictures/Screenshots/Screenshot_20200401_112209_com.tencent.trtc.jpg
     */
    public static List  getCalleryPhotos3(Context context){
        if (context == null){
            return null;
        }
        List  imaPathList = new ArrayList<>();
        Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        mContentResolver = context.getContentResolver();
        // 只查询jpeg和png的图片
        Cursor mCursor = mContentResolver.query(mImageUri, null,
                MediaStore.Images.Media.MIME_TYPE + "=? or "
                        + MediaStore.Images.Media.MIME_TYPE + "=?",
                new String[]{"image/jpeg", "image/png"},
                MediaStore.Images.Media.DATE_MODIFIED);
        Log.e("TAG", mCursor.getCount() + "");
        while (mCursor.moveToNext()) {
            // 获取图片的路径
            String path = mCursor.getString(mCursor
                    .getColumnIndex(MediaStore.Images.Media.DATA));
            imaPathList.add(path);
        }
        mCursor.close();
        return imaPathList;
    }
}

2. 使用方法:

第一种: 

   List iimaPathList = GetGalleryPhotosUtils.getGalleryPhotos(getContentResolver());

第二种、 

      List imaPathList = GetGalleryPhotosUtils.getCalleryPhotos2(mContext);

第三种、 

    List imaPathList = GetGalleryPhotosUtils.getCalleryPhotos3(mContext);

 

3. 运行一下,看看效果吧。

 

关注公众号,了解更多精选文章吧。

 

 

你可能感兴趣的:(android开发)