android 图片保存到文件夹中 但不在本地图库中显示

正常保存图片
Activity.java:

 String sdCardDir = Environment.getExternalStorageDirectory() + "/文件夹名称/";
 XXUtil.saveBitmap(bmp, context, sdCardDir, zoneImageIdList.get(m) + ".jpeg");

XXUtil.java:

 //保存bitmap图片到本地
    public static void saveBitmap(Bitmap bitmap, Context context,String path,String saveName) {
        try {

            File dirFile = new File(path);
            if (!dirFile.exists()) {              //如果不存在,那就建立这个文件夹
                dirFile.mkdirs();
            }
            File file = new File(path,  saveName);
            FileOutputStream fos = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 把文件插入到系统图库
//        try {
//            MediaStore.Images.Media.insertImage(context.getContentResolver(),
//                    file.getAbsolutePath(), fileName, null);
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        }
//        // 通知图库更新
//        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
//                Uri.parse("file://" + "/sdcard/namecard/")));
    }

这样子的话,会将保存到的图片显示在系统图库中,解决如下:
添加忽略文件”.nomedia”,在需要呗忽略的文件夹下创建一个名为”.nomedia”的空文件即可,系统应用即不扫描其文件。

String sdCardDir = Environment.getExternalStorageDirectory() + "/文件夹名称/";
XXUtil.addIgnore(sdCardDir);
 public static synchronized void addIgnore(String filePath) {
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        File ignoreFile = new File(filePath + "/.nomedia");
        if (ignoreFile.exists() && ignoreFile.isFile()) {
            return;
        }
        try {
            ignoreFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

你可能感兴趣的:(android 图片保存到文件夹中 但不在本地图库中显示)