Android实现获取手机相册里面的所有图片和内存卡中指定文件

本文介绍如何在Android设备上获取相册中显示的图片,并详细说明如何获取内存卡上的特定文件类型。同时,讨论了如何通知系统更新媒体库以及在文件改名后如何确保其被媒体库正确扫描。
摘要由CSDN通过智能技术生成

获取手机相册里所有会显示的图片,并不是手机所有的图片

   		String selection = MediaStore.Images.Media.BUCKET_ID + " = ?";
        String bucketId = String.valueOf(id);
        String sort = MediaStore.Images.Media._ID + " DESC";
        String[] selectionArgs = {bucketId};

        Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        Cursor c;
        if (!bucketId.equals("0")) {
            c = resolver.query(images, null, selection, selectionArgs, sort);	//查询带条件
        } else {
            c = resolver.query(images, null, null, null, sort);//查询所有
        }
        ArrayList<Uri> imageUris = new ArrayList<>();
        if (c != null) {
            try {
                if (c.moveToFirst()) {
                //c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA) 完整路径名
                //c.getString(c.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME) 文件名
                    setPathDir(c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA)),
                            c.getString(c.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME)));
                    do {
                        String mimeType = c.getString(c.getColumnIndex(MediaStore.Images.Media.MIME_TYPE));
                        //获取文件夹名  (DCIM,Camera)  不是完整路径 
                        String folderName = c.getString(c.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME));
                        if (isExceptMemeType(exceptMimeTypeList, mimeType)
                                || isNotContainsSpecifyFolderList(specifyFolderList, folderName)) continue;

                        int imgId = c.getInt(c.getColumnIndex(MediaStore.MediaColumns._ID));
                        //获取 uri
                        Uri path = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + imgId);
                        imageUris.add(path);

                    } while (c.moveToNext());
                }
                c.close();
            } catch (Exception e) {
                if (!c.isClosed()) c.close();
            }
        }
        return imageUris;
private void setPathDir(String path, String fileName) {
   
        pathDir = path.replace("/" + fileName, "");	//获取文件路径
    }


相册显示的图片 需要加入以下代码
String path = "你图片的完整路径";
   // 其次把文件插入到系统图库
//                        try {
   
//                            MediaStore.Images.Media.insertImage(getContext().getContentResolver(), path, path.substring(path.lastIndexOf("/")+1), null);
//                        } catch (FileNotFoundException e) {
   
//                            e.printStackTrace();
//                        }
                    //需要通知相册更新了
                        getContext().sendBroadcast(
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值