android保存图片成功后图库里却找不到图片

1,情况说明
明明在文件管理器找得到图片,但是在手机系统的图库/相册里却找不到。
原因:文件虽然保存了,但是图库没有刷新。
解决办法:保存文件成功后通过发送广播来通知图库刷新。
最靠谱的解决办法
先把图片插入到系统图库中,再通知图库更新。
注意这里传了文件的绝对路径 file1.getAbsolutePath())

  MediaStore.Images.Media.insertImage(context.getContentResolver(),
                    filePhth,fileName , null);
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file1.getAbsolutePath())));

前面为什么说最靠谱。因为你可能在用这个,大部分手机这个方法一样可行,但是我用荣耀4c不行(被这个坑了近两个小时)

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+ Environment.getExternalStorageDirectory())))

下面附上完整的保存图方法。

/**
     * 保存位图到本地
     * @param bitmap
     * @param path   本地路径
     * @return void
     */
    public void SavaImage(Bitmap bitmap, String path) {
        File file = new File(path);
        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        Uri uri = Uri.fromFile(file);
        intent.setData(uri);
        context.sendBroadcast(intent);
        FileOutputStream fileOutputStream = null;
        String filePhth;
        String fileName;
        //文件夹不存在,则创建它
        if (!file.exists()) {
            file.mkdir();
        }
        try {
            filePhth=path + "/" + System.currentTimeMillis() + ".png";
            fileName=System.currentTimeMillis()+"";
            File file1=new File(filePhth);
            fileOutputStream = new FileOutputStream(file1.getPath());
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
            fileOutputStream.close();
            //图片路径
//            MediaStore.Images.Media.insertImage(context.getContentResolver(),
//                    filePhth,fileName , null);
            MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, "", "");
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file1.getAbsolutePath())));
            Log.d("aaa",file1.getAbsolutePath()+"-----"+path);
//            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
        } catch (Exception e) {
            ToastUtil.showToast("保存失败");
            e.printStackTrace();
        }
    }

你可能感兴趣的:(android保存图片成功后图库里却找不到图片)