为什么 File(uri.path) 有效但 uri.toFile() 无效(错误:Uri 缺少“文件”方案)

Ben*_*Ben 5 android uri file

一切都在标题中。

我可以使用 File 构造函数获取 File 对象,但在 Uri 上使用 toFile() 扩展会导致错误。

java.lang.IllegalArgumentException: Uri lacks 'file' scheme: content://***.provider/files/06082021_113127.jpg

我做什么 :

private var uri: Uri? = null

binding.camera.setOnClickListener {

    val name = LocalDateTime.now().generateFileName()
    val file = File(requireContext().filesDir, "$name.jpg")
    uri = FileProvider.getUriForFile(
        requireContext(),
        requireContext().packageName + ".provider",
        file
    )

    takePicture.launch(uri)

}

private val takePicture = registerForActivityResult(ActivityResultContracts.TakePicture()) { success: Boolean ->

        val test = uri?.path?.let { File(it) }
        val test2 = uri?.toFile()

        Log.e("test", "${test?.name}")
        Log.e("test2", "${test2?.name}")

    }
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙解释一下吗?