一、介紹
在很多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/zh-hant/n/200608.html