當我嘗試將內容寫入使用 Intent 創建的檔案時出現例外。錯誤是 IOException 錯誤“No content provider:Intent {...}”。我看到在“我的驅動器”中創建的檔案,但它沒有內容。
我想將文本輸出到文本檔案。這是將資料輸出到音頻 wav 檔案的一步。這就是我的目標。
I'm basically doing this tutorial, except I'm using Kotlin:
https://www.youtube.com/watch?v=CGD1Kr7A77Y&ab_channel=Sam'sAndroidClassroom
誰能幫我這個?我提供了下面的代碼,它在一個活動檔案中。“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)
}
}
}
uj5u.com熱心網友回復:
var uri = data
data是一個Intent?。您將它分配給一個名為 的變數uri,這讓我們倆都感到困惑。
將其更改為:
val uri = data?.data
現在,uri將是一個Uri?. 您可以將其與null支票一起使用。并且,您可以從那里contentResolver.openOutputStream(uri.toString())打開OutputStream.
這也是您最初遇到問題的原因。您創建了一個 的字串表示Intent,然后嘗試將其決議為 as Uri,但這是行不通的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/310827.html
上一篇:requireActivity().getApplicationContext()“可能會產生一個NullPointerExeption”
