安卓原生相册调用。
onActivityResult 被废弃。
初始化
val pickLauncher = registerForActivityResult(ActivityResultContracts.GetContent()){ uri: Uri? ->
uri?.let { it ->
Log.d("pickLauncher", it.toString())
Glide.with(this).load(it).into(tempImage)
}
}
调用
//使用之前先请求权限 READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE
pickLauncher.launch("image/*")
存储相册获取的图片到指定文件夹,文件存储(可以使图片,word文件,或者音视频)
存储代码
fun getImageStoragePath(context: Context):String{
return "${context.externalCacheDir}/imageCacheFile"
}
fun saveImagePath(context: Context, bitmap: Bitmap?): String? {
var bitmap: Bitmap? = bitmap
val file = File(getImageStoragePath(context))
// 判断当前目录是否存在,不存在就创建
if (!file.exists()) {
file.mkdir()
}
val imageFile = File(file.path.toString() + "/" + System.currentTimeMillis() + ".jpg")
try {
val os: OutputStream = FileOutputStream(imageFile)
bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, os)
//释放缓存
os.flush()
os.close()
bitmap?.recycle()
return imageFile.absolutePath
} catch (e: Exception) {
e.printStackTrace()
}
return null
}
调用方式
context?.let {
//把Uri转为Bitmap
val bitmap: Bitmap =
BitmapFactory.decodeStream(it.contentResolver.openInputStream(uri))
var saveImagePath = StorageManageClass().saveImagePath(it, bitmap)
Log.i("save_succeed", "$saveImagePath")
}