android - 在 kotlin 上设置默认图片库
问题描述
我正在尝试在 kotlin 中使用默认组件在 android studio 中实现画廊功能。目标是单击一个按钮并打开所需的路径作为一个通用的 Intent 。我不明白模拟器怎么可能只为我打开最近的图像,而不是我在文件提供程序上指定的路径。
在此处输入图像描述
我正在使用的代码部分是:
fun dispatcherGalleryImage(){
try {
val uri: Uri = Uri.parse(Environment.getExternalStoragePublicDirectory(requireActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString().replace("/storage/emulated/0", "")).path.toString())
Log.info(uri.toString())
val intent=Intent(Intent.ACTION_GET_CONTENT)
intent.type ="image/*"
startActivityForResult(intent, TAKE_GALLERY_IMAGE)
}catch (ex: Exception){
Log.info(ex.toString())
}
}
解决方案
我不明白模拟器怎么可能只为我打开最近的图像而不是我在文件提供程序上指定的路径
首先,您没有使用uri
,除了记录它的值。
其次,您传递给的Uri.parse()
字符串不是 a 的有效字符串表示形式Uri
(Uri.fromFile()
用于 a File
)。
第三,您没有使用FileProvider
. 而且 afile:///
Uri
在 Android 7.0+ 上基本上没用,因为FileUriExposedException
如果你在Intent
.
第四,ACTION_GET_CONTENT
不以aUri
作为输入。ACTION_GET_CONTENT
当您已经拥有内容时,尚不清楚为什么要使用。
如果您的目标是让用户在他们想要的图像查看器中查看图像,请使用ACTION_VIEW
并将FileProvider
-suppliedUri
和具体(非通配符)MIME 类型放入Intent
.
推荐阅读
- c# - Update using IDataParameter not working in Oracle
- java - 使用标签时Springfox swagger-ui端点重复
- python - 如何正确从 ubuntu 上的 windows 导入 django 数据?
- sails.js - 使用 Waterline ORM / SailsJS 查询 Join 结果
- opengl - 在 3D 世界空间中查找 ViewPort Rectangle (Opengl)
- javascript - 如何将对象添加到数组中?
- python - 相关字段查找无效:blog_posts_name
- laravel - 如何在自定义工具或卡片中使用 Nova 组件?
- azure-devops - Azure Devops 管道能否更新 Azure 应用配置
- excel - 数据验证 - 根据表中的值动态更新