我正在使用相机拍照并从图库中进行选择。之后进行压缩以减小文件大小。我正在使用getRealPathFromURI()
获取实际图像路径的方法,但在 Android Q 中MediaStore.Images.Media.DATA
已弃用。
fun getRealPathFromURI(contentUri: Uri, activityContext: Activity): String {
val proj = arrayOf(MediaStore.Images.Media.DATA)
val cursor = activityContext.managedQuery(contentUri, proj, null, null, null)
val column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
cursor.moveToFirst()
return cursor.getString(column_index)
}
根据我尝试过的文档openFileDescriptor()
获得访问权限:
private fun getBitmapFromUri(context: Context, uri: Uri): Bitmap {
val parcelFileDescriptor = context.contentResolver.openFileDescriptor(uri, "rw")
val fileDescriptor = parcelFileDescriptor?.fileDescriptor
val image = BitmapFactory.decodeFileDescriptor(fileDescriptor)
parcelFileDescriptor?.close()
return image
}
也尝试过this https://stackoverflow.com/a/52095352
由于分区存储的原因,我们无法将图像直接写入所需的文件夹,然后更新MediaStore
。相反,Android Q 引入了一个新领域MediaStore.Images.Media.RELATIVE_PATH
我们可以在其中指定图像的路径(例如,"Pictures/Screenshots/"
).
请参阅“将照片保存到图库”部分this https://proandroiddev.com/working-with-scoped-storage-8a7e7cafea3博客以获取更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)