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

且不会报: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("已成功保存到相册");
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容