实现方案
问题如下:
Android 系统中拍照后,想将Bitmap存储在应用自己的目录下面,比如应用包名为com.xxxx.xxxx,那么想将图片Bitmap存储在 data/data/com.xxxx/files 目录下,这样用户就无法删除这些图片了。当想要选择这些图片时想通过以下代码,Matisse.from(this)
.choose(MimeType.ofImage()) // 只选图片
.countable(true) // 显示选中数量
.maxSelectable(100) // 最多选9张
.imageEngine(GlideEngine()) // 使用Glide加载引擎
.forResult(REQUEST_CODE_CHOOSE) 这段代码可能需要改造一下,只访问data/data/com.xxxx/files目录下的图片,具体要如何实现呢,如果想将图片Bitmap存储在 data/data/com.xxxx/files 目录下进行管理有什么缺陷,有什么更好的策略和实现方案,主要是为了管理图片,不让用户随意删除图片
将图片保存到应用私有目录
fun saveBitmapToPrivateDir(context: Context, bitmap: Bitmap, filename: String): Boolean {
return try {
context.openFileOutput(filename, Context.MODE_PRIVATE).use {
stream ->
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, stream)
true
}
} catch (e: Exception) {
e.printStackTrace()
false
}
}
自定义图片选择器(替代Matisse)
class PrivateImageAdapter(private val context: Context) :
RecyclerView.Adapter<PrivateImageAdapter.ViewHolder>() {
private val imageUris = mutableListOf<Uri>()
init {
loadPrivateImages()
}
private fun loadPrivateImages() {
val filesDir = context.filesDir
filesDir.listFiles {
_, name ->
name.endsWith(".jpg") || name.e