gpt4 book ai didi

java - Android Kotlin(初学者)——使用 File() 和从 ACTION_GET_CONTENT 返回的 Uri

转载 作者:搜寻专家 更新时间:2023-11-01 09:26:26 24 4
gpt4 key购买 nike

我对 Android 和 Kotlin/Java 都很陌生。我不明白为什么我的 File() 方法会出现错误:

none of the following functions can be called with the arguments supplied.

我认为我输入的内容应该返回从 ACTION_GET_CONTENT 获得的 Uri,这应该足以构造 File 对象。我正在尝试制作一个将加载 txt 文件并显示它的应用程序。我希望这是某个地方的一个非常简单的错误:

fun showFileDialog() {
val fileintent = Intent(Intent.ACTION_GET_CONTENT)
fileintent.setType("text/plain")
fileintent.addCategory(Intent.CATEGORY_OPENABLE)
startActivityForResult(fileintent, FILE_SELECT_CODE)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode == FILE_SELECT_CODE && resultCode == Activity.RESULT_OK) {
val selectedfile = File(data!!.data)
val readData = FileInputStream(selectedfile).bufferedReader().use { it.readText
textView.text = readData
}
}
}

我也不知道发布的其余代码是否有效,但这个错误不会让我构建它来测试它。任何帮助/指针的 TIA

已解决:

第一个答案解释了为什么我收到错误(因此,回答了我的问题)

在从下面的第二个答案和评论中获得帮助后,(以及更多关于 SO 的搜索;参见下面的链接)我将最后 3 行代码更改为:

val input: InputStream = getContentResolver().openInputStream(data!!.data)
val inputAsString = input.bufferedReader().use { it.readText() }
textView.setText(inputAsString)

这很好用。谢谢!

链接:

Android: Getting a file URI from a content URI?

In Kotlin, how do I read the entire contents of an InputStream into a String?

最佳答案

虽然我无法评论您的其余代码,data!!.data returns android.UriFile 需要 String [1].

您必须将 Uri 转换为文件名:类似于 File(data!!data.getPath()); [2]

[1]。它还需要一个 URI,但这是一个 Java.net.URI,而不是一个 Android.Uri。

[2]。您仍然应该确保您获得的 Uri 指向文件系统上的路径。您可能还必须执行类似 this 的操作.

关于java - Android Kotlin(初学者)——使用 File() 和从 ACTION_GET_CONTENT 返回的 Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com