【发布时间】:2021-12-01 09:35:03
【问题描述】:
当我尝试将内容写入使用 Intent 创建的文件时出现异常。
错误是 IOException 错误
“没有内容提供者:Intent {...}”。
我看到在“我的云端硬盘”中创建的文件,但它没有内容。
我想将文本输出到文本文件。这是朝着将数据输出到音频 wav 文件的方向迈出的一步。
我基本上是在做这个教程,除了我使用的是 Kotlin: https://www.youtube.com/watch?v=CGD1Kr7A77Y&ab_channel=Sam%27sAndroidClassroom
代码位于活动文件中。 “buttonFiles”是我要添加 Click Listerner 的按钮。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_extra)
buttonFiles.setOnClickListener{
val intent = Intent()
.addCategory(Intent.CATEGORY_OPENABLE)
.setType("text/plain")
.putExtra(Intent.EXTRA_TITLE, "testFileSam.txt")
.setAction(Intent.ACTION_CREATE_DOCUMENT)
startActivityForResult(Intent.createChooser(intent, "text file"), 1)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 1 && resultCode == RESULT_OK) {
var uri = data
try{
if(uri != null) {
var outputStream = contentResolver.openOutputStream(Uri.parse(uri.toString()))
val charset = Charsets.UTF_8
outputStream?.write("Hello, is anybody out there!!!".toByteArray(charset))
}
}catch( e: IOException){
Log.d("Debug"," IOException = " + e.message)
}
}
}
【问题讨论】:
-
首先将
Uri.parse(uri.toString())替换为uri。然后,如果您仍然遇到问题,您可能需要编辑您的问题并发布完整的堆栈跟踪。 -
@CommonsWare 谢谢。它认为这是类型不匹配。编译错误为“类型不匹配:推断类型为 Intent 但预期为 Uri”。
标签: java android android-studio kotlin mediastore