android保存图片到相册

背景

我们在开发应用的时候,会有保存图片到相册的功能。

实现

授权

1
2
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

关键代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
fun getGalleryPath(context: Context)  = buildString {
append(Environment.getExternalStorageDirectory())
append(File.separator)
append(Environment.DIRECTORY_DCIM)
append(File.separator)
append("Camera")
append(File.separator)
}
AsyncTask.execute {
Runnable {
try {
val file = File(buildString {
append(DirectoryUtils.getGalleryPath(this@ChargeActivity))
append(imageName)
})
if (file.exists())
file.delete()
file.createNewFile()
val fos = FileOutputStream(file)
qrBitmap?.compress(Bitmap.CompressFormat.PNG, 100, fos)
fos.flush()
fos.close()
runOnUiThread {
ToastUtil.shortShow("图片${file}已经保存")
}
val intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
val uri = Uri.fromFile(file)
intent.data = uri
sendBroadcast(intent)
} catch (e: Exception) {
e.printStackTrace()
runOnUiThread {
ToastUtil.shortShow("保存图片失败")
}
}
}.run()
}

结语

有时候我们调用了保存图片到相册的方法,我们选择图片的时候,找不到相关图片,添加下面代码即可。这样在图片文件件中就可以看见了。

1
2
3
4
val intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
val uri = Uri.fromFile(file)
intent.data = uri
sendBroadcast(intent)

坚持原创技术分享,您的支持将鼓励我继续创作!
关注微信公众号 haibintalk,最新文章主动推送
关注微信公众号: haibintalk