Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当另一个函数在无问题的情况下使用该文件时,函数中的FileNotFoundException_Android_File_Exception_Kotlin - Fatal编程技术网

Android 当另一个函数在无问题的情况下使用该文件时,函数中的FileNotFoundException

Android 当另一个函数在无问题的情况下使用该文件时,函数中的FileNotFoundException,android,file,exception,kotlin,Android,File,Exception,Kotlin,我得到了这个错误 无法解码流:java.io.FileNotFoundException:/content:/media/external/images/media/119(没有这样的文件或目录) 调用此函数()时,在变量takenImageUri上: 我从之前拍摄照片的片段中获取uri id的方式。这是创建它的实际函数 private fun takePhoto() { val photoResult = fotoapparat?.takePicture()

我得到了这个错误
无法解码流:java.io.FileNotFoundException:/content:/media/external/images/media/119(没有这样的文件或目录)

调用此函数()时,在变量
takenImageUri
上:

我从之前拍摄照片的片段中获取uri id的方式。这是创建它的实际函数

private fun takePhoto() {
        val photoResult = fotoapparat?.takePicture()

        fun getImageUri(inContext: Context, inImage: Bitmap): Uri {

            val bytes = ByteArrayOutputStream()

            inImage.compress(Bitmap.CompressFormat.PNG, 100, bytes)

            val path = MediaStore.Images.Media.insertImage(inContext.contentResolver, inImage, "Title", null)

            return Uri.parse(path)
        }


        photoResult
            ?.toBitmap()
            ?.whenAvailable { bitmapPhoto ->
                val uriImage = getImageUri(this.context!!, bitmapPhoto!!.bitmap)

                val action =
                    CameraPreviewFragmentDirections.actionCameraPreviewFragmentToApproveImageFragment(uriImage.toString())
                findNavController(camera_nav_host_fragment).navigate(action)
            }
    }
这个文件是一个图像,在调用这个函数之前,我将图像加载到ImageView中,它显示得非常好,所以我知道路径是正确的。如果这个文件存在,为什么它会告诉我这个错误

我收到此错误,无法解码流:java.io.FileNotFoundException:/content:/media/external/images/media/119(没有这样的文件或目录)


这是因为它不是一个文件。您正在将
内容的字符串表示形式
Uri
传递给需要文件系统路径的对象。该
Uri
是您(或某物)从
MediaStore

获取的值。好的,我知道了,您能给我指出正确的方向吗?我不知道该怎么做conversion@Tsabary:该库似乎不支持从
Uri
读取图像。除了修改库之外,没有简单的修复方法。@CommonWare ok感谢您的澄清,这绝对省去了我胡闹的麻烦。我已经添加了上一个片段中的代码,我相信其中有一个文件正在生成。也许我只是把错误的东西传给了下一个片段?如果你的目标是把这个图像放在用户可以访问的地方,那么你最好找一个更好的库,或者把它分叉并对它进行修改。如果这不是您的目标,请摆脱
getImageUri()
,并将
位图
写入内部存储器(
getFilesDir()
getCacheDir()
上的
Context
),然后获得一个可以与该库一起使用的
文件。
private fun takePhoto() {
        val photoResult = fotoapparat?.takePicture()

        fun getImageUri(inContext: Context, inImage: Bitmap): Uri {

            val bytes = ByteArrayOutputStream()

            inImage.compress(Bitmap.CompressFormat.PNG, 100, bytes)

            val path = MediaStore.Images.Media.insertImage(inContext.contentResolver, inImage, "Title", null)

            return Uri.parse(path)
        }


        photoResult
            ?.toBitmap()
            ?.whenAvailable { bitmapPhoto ->
                val uriImage = getImageUri(this.context!!, bitmapPhoto!!.bitmap)

                val action =
                    CameraPreviewFragmentDirections.actionCameraPreviewFragmentToApproveImageFragment(uriImage.toString())
                findNavController(camera_nav_host_fragment).navigate(action)
            }
    }