一、介绍
在很多Android应用中,需要将生成的图片保存到用户的相册中,以供用户查看和分享。本文将介绍如何在Android应用中实现保存图片到相册的功能,并且对Android平台上保存图片到相册涉及到的文件读写和权限申请进行详细阐述。
二、涉及知识点
实现保存图片到相册的功能需要涉及以下知识点:
1. 文件的读写
2. 权限的申请
3. 相册的操作
三、文件的读写
首先,在Android平台上实现文件的读写需要先获取到存储文件的路径。当然Android平台为应用程序提供了几种存储方式,例如:
1. 内部存储
2. 外部存储
其中,内部存储是指应用程序的私有空间,外部存储是指共享空间。在这里我们介绍如何在外部存储中保存图片到相册。
获取外部存储路径的代码如下:
“`java
String externalStorage = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileDir = externalStorage + “/Pictures/”;
“`
当然在Android6.0之后需要动态申请存储权限,代码如下:
“`java
private String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
private void requestWriteStoragePermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(permissions, 1001);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1001) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//授权成功
} else {
//授权失败
}
}
}
“`
四、保存图片到相册
在获取到存储路径后,我们可以将文件写入到相册内。Android系统提供了将图片保存到相册的方法,代码如下:
“`java
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DESCRIPTION, “This is an image”);
values.put(MediaStore.Images.Media.DISPLAY_NAME, “Image.jpg”);
values.put(MediaStore.Images.Media.MIME_TYPE, “image/jpeg”);
values.put(MediaStore.Images.Media.TITLE, “Image.jpg”);
//获取文件路径
String filePath = fileDir + “Image.jpg”;
File imageFile = new File(filePath);
Uri imageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
try {
OutputStream imageOut = getContentResolver().openOutputStream(imageUri);
//将图片写入相册
Bitmap bmp = BitmapFactory.decodeFile(filePath);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, imageOut);
imageOut.flush();
imageOut.close();
} catch (IOException e) {
e.printStackTrace();
}
“`
关键代码是通过MediaStore.Images.Media.EXTERNAL_CONTENT_URI获取到相册URI,从而将图片写入到相册内。
五、总结
通过本文的阐述,可以了解到Android平台上如何实现将图片保存到相册的功能,涉及到文件的读写和权限的申请,以及相册的操作。需要特别注意,在6.0之后的Android版本中需要动态申请存储权限,否则会导致无法保存图片到相册的问题。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/200608.html