一个函数中的FileNotFoundException,而另一个函数正在使用文件而没有问题

时间:2019-03-17 23:30:21

标签: android file exception kotlin

我收到此错误 Unable to decode stream: java.io.FileNotFoundException: /content:/media/external/images/media/119 (No such file or directory)

在变量takenImageUri上调用此函数(using this library)时:

refBigImage.putFile(
            Uri.fromFile(
                Resizer(this.context)
                    .setTargetLength(80)
                    .setQuality(100)
                    .setOutputFormat("PNG")
                    .setOutputFilename(randomName + "Small")
                    .setOutputDirPath(storagePath)
                    .setSourceImage(File(takenImageUri))
                    .resizedFile
            )
)

我从拍摄照片的前一个片段中获取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中,并且显示得很好,因此我知道路径是正确的。如果此文件存在,为什么会给我这个错误?

1 个答案:

答案 0 :(得分:1)

  

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

那是因为它不是文件。您正在将content Uri的字符串表示形式传递给需要文件系统路径的对象。 Uri是您(或某物)从MediaStore获得的值。