首页 > 解决方案 > 在 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())
    }
}

标签: androidandroid-studiokotlinimage-gallery

解决方案


我不明白模拟器怎么可能只为我打开最近的图像而不是我在文件提供程序上指定的路径

首先,您没有使用uri,除了记录它的值。

其次,您传递给的Uri.parse()字符串不是 a 的有效字符串表示形式UriUri.fromFile()用于 a File)。

第三,您没有使用FileProvider. 而且 afile:/// Uri在 Android 7.0+ 上基本上没用,因为FileUriExposedException如果你在Intent.

第四,ACTION_GET_CONTENT不以aUri作为输入。ACTION_GET_CONTENT当您已经拥有内容时,尚不清楚为什么要使用。

如果您的目标是让用户在他们想要的图像查看器中查看图像,请使用ACTION_VIEW并将FileProvider-suppliedUri和具体(非通配符)MIME 类型放入Intent.


推荐阅读