获取手机本地的全部图片的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<String> getGalleryPhotos(ContentResolver resolver) {
        if (resolver == null){
            return null;
        }
        ArrayList<String> galleryList = new ArrayList<String>();
        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<String>  getCalleryPhotos2(Context context){
        if (context == null){
            return null;
        }
        List<String>  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<String>  getCalleryPhotos3(Context context){
        if (context == null){
            return null;
        }
        List<String>  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<String> iimaPathList = GetGalleryPhotosUtils.getGalleryPhotos(getContentResolver());

第二种、 

      List<String> imaPathList = GetGalleryPhotosUtils.getCalleryPhotos2(mContext);

第三种、 

    List<String> imaPathList = GetGalleryPhotosUtils.getCalleryPhotos3(mContext);

 

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

 

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

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yayayaiii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值