美文网首页
android实现图片保存到相册,且不会出现两种一样的图片。

android实现图片保存到相册,且不会出现两种一样的图片。

作者: 背锅TV丶伴奏大师 | 来源:发表于2021-05-19 16:02 被阅读0次

且不会报:Permission Denial: not allowed to send broadcast
代码如下,拷贝到你工具类中

/**
     * 保存图片到相册
     */
    public static void saveImageToGallery(Bitmap bitmap,Context context) {
        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            showToast( "sdcard未使用");
            return;
        }
        // 首先保存图片
        String fileName = System.currentTimeMillis() + ".jpg";
        //定义图片地址
        String ALBUM_PATH=Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Pictures";
        File file = new File(ALBUM_PATH, fileName);
        //文件是否存在
        if (!file.getParentFile().exists()) {
            file.mkdirs();
        }
        try {
            FileOutputStream fos = new FileOutputStream(file);
            // 格式为 JPEG,照相机拍出的图片为JPEG格式的,PNG格式的不能显示在相册中
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return;
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
        //回收bitmap
        if(!bitmap.isRecycled()){
            bitmap.recycle();
        }
        // 其次把文件插入到系统图库,这种写法代替MediaStore.Images.Media.insertImage()来实现相册只出现一张图片.两张图片的原因:一个是自己保存的,另外一个时系统生产的缩略图
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
        context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        // 最后通知图库更新,4.4版本以上使用ACTION_MEDIA_SCANNER_SCAN_FILE,否则使用ACTION_MEDIA_MOUNTED时会报:Permission Denial: not allowed to send broadcast
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + ALBUM_PATH)));
        showSuccessToast("已成功保存到相册");
    }

相关文章

网友评论

      本文标题:android实现图片保存到相册,且不会出现两种一样的图片。

      本文链接:https://www.haomeiwen.com/subject/ekvpjltx.html