Android在应用中拍照并管理图片的策略分析

实现方案

问题如下:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值