入力したテキストをファイルとして保存するアプリを作ってみました。



ファイル保存も読み込みもインテントでファイル選択画面を呼び出して処理する流れは同じです。
ファイル保存
データ書き込み処理を記載します。
val startForResult = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){ result ->
if(result.resultCode == RESULT_OK){
result.data?.data?.let {
contentResolver.openOutputStream(it)?.
bufferedWriter()?.use {
it.write(edText.text.toString())
}
}
}
}
インテントを指定して呼び出します。
btnSave.setOnClickListener {
startForResult.launch(
Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TITLE,"memo.txt")
}
)
}
ファイル読み込み
ファイルに書かれたテキストを読み込んで、表示する処理を書きます。
val startForResult2 = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){ result ->
if(result.resultCode == RESULT_OK){
result.data?.data?.let {
val str = StringBuilder()
contentResolver.openInputStream(it)
?.bufferedReader()?.forEachLine {
str.append(it)
str.append(System.getProperty("line.separator"))
}
edText.setText(str.toString())
}
}
}
呼び出しは保存する時と同じです。
btnRead.setOnClickListener {
startForResult2.launch(
Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TITLE,"memo.txt")
}
)
}