android 获取手机中的所有图片或某一目录下的图片

时间:2021-09-07 14:39:28

获取手机中的所有图片,并过滤获取某一目录下的图片。(注释掉的代码可以按照目录分组)


private void getAllPhotoInfo() {
        new Thread(new Runnable() {
            @Override
            public void run() {
//                List<MediaBean> mediaBeen = new ArrayList<>();
                HashMap<String,List<MediaBean>> allPhotosTemp = new HashMap<>();//所有照片
                Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                String[] projImage = { MediaStore.Images.Media._ID  , MediaStore.Images.Media.DATA  ,MediaStore.Images.Media.SIZE  ,MediaStore.Images.Media.DISPLAY_NAME};
                final Cursor mCursor = getContentResolver().query(mImageUri,
                        projImage,
                        MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=?",
                        new String[]{"image/jpeg", "image/png"},
                        MediaStore.Images.Media.DATE_MODIFIED+" desc");

                if(mCursor!=null){
                    while (mCursor.moveToNext()) {
                        // 获取图片的路径
                        String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA));
                        int size = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Images.Media.SIZE))/1024;
                        String displayName = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
                        //用于展示相册初始化界面
                        if(path.contains("/storage/emulated/0/messageBoard/photoImgs")){
                            mediaBeen.add(new MediaBean(path,size,displayName));
                        }

//                        // 获取该图片的父路径名
//                        String dirPath = new File(path).getParentFile().getAbsolutePath();
//                        
//                        //存储对应关系
//                        if (allPhotosTemp.containsKey(dirPath)) {
//                            List<MediaBean> data = allPhotosTemp.get(dirPath);
//                            data.add(new MediaBean(path,size,displayName));
////                            Log.e(TAG,"getAllPhotoInfo  "+data.size()+",path="+data.get(0).getPath()+",name="+data.get(0).getDisplayName());
//                            continue;
//                        } else {
//                            List<MediaBean> data = new ArrayList<>();
//                            data.add(new MediaBean(path,size,displayName));
//                            allPhotosTemp.put(dirPath,data);
////                            Log.e(TAG,"getAllPhotoInfo  else "+data.size()+",path="+data.get(0).getPath()+",name="+data.get(0).getDisplayName());
//                        }
                    }
                    mCursor.close();
                }
                //更新界面
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //...
                        Log.e(TAG,"mediaBeen="+mediaBeen.size());
                        albumAdapter = new AlbumAdapter(AvaterActivity.this,mediaBeen);
                        gvAlbum.setAdapter(albumAdapter);
                        gvAlbum.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                Intent cropIntent = new Intent(mContext, CropImgActivity.class);
                                cropIntent.putExtra("status",status);
                                cropIntent.putExtra("takepath",mediaBeen.get(position).getPath());
                                startActivity(cropIntent);
                            }
                        });
                    }
                });
            }
        }).start();
    }