便捷保存图片到相册并触发扫描更新

需积分: 47 1 下载量 36 浏览量 更新于2024-09-02 收藏 2KB TXT 举报
这段代码提供了两个关键功能:将Bitmap图像保存到Android设备的相册并自动触发相册更新,以及检查应用是否具有访问外部存储的权限。我们首先来看如何实现这两个功能。 1. **图片保存到相册(saveBmp2Gallery方法)** - 方法`saveBmp2Gallery`接收三个参数:一个Activity上下文`context`,一个Bitmap对象`bmp`,和一个自定义图片名`picName`。 - 首先,通过`Environment.getExternalStorageDirectory()`获取设备的外部存储路径,然后构建完整的图片保存路径,如`/storage/emulated/0/DCIM/Camera/picName.jpg`。 - 使用`MediaStore.Images.Media.insertImage()`方法将Bitmap数据插入到媒体库,这个方法需要一个ContentResolver,Uri,以及图片的完整路径。这里,Uri是通过`Uri.fromFile(file)`创建的,确保指向新创建的文件。 - 发送一个ACTION_MEDIA_SCANNER_SCAN_FILE的广播,告知系统扫描新的文件,以便同步更新相册中的图片列表。最后,通过`ToastUtils.showShortToast()`显示保存成功的提示。 2. **检测外部存储权限(verifyStoragePermissions方法)** - 当用户需要访问外部存储时,通常需要检查应用是否已经获得了相应的权限。`verifyStoragePermissions`方法负责这个任务。 - 使用`ActivityCompat.checkSelfPermission()`检查应用是否已获得`WRITE_EXTERNAL_STORAGE`权限。如果权限不足,返回值将不等于`PackageManager.PERMISSION_GRANTED`。 - 如果权限缺失,调用`ActivityCompat.requestPermissions()`请求权限,并设置一个临时请求码`REQUEST_EXTERNAL_STORAGE`。这将启动一个对话框让用户确认授权,用户同意后,应用程序会继续执行。 总结来说,这段代码的核心是图片的保存逻辑,它涉及到了Android的文件系统操作、媒体库的插入以及媒体扫描器的使用,确保新保存的图片能够被系统自动添加到相册中。同时,通过权限检查,保证了应用在需要写入外部存储时能够得到用户的许可。这对于任何需要用户上传或管理照片的应用来说都是至关重要的功能。