アプリ固有のストレージでは他のアプリがアクセスできない情報を保存することができます。
このストレージにアクセスするには、Context
オブジェクトのfilesDir
プロパティを使用します。
以下のコードでは、ボタンクリック時にeditText
コンポーネントのテキストをアプリ固有ストレージに保存しています。これによりアプリを終了した後でも保存されたテキストを表示することができるようになります。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// テスト用のファイルからテキスト表示を初期化
val testFile = "test.txt"
loadTextFromFile(testFile)
// ボタンクリック時にテキストを保存
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
saveTextToFile(testFile)
}
}
// `editText` からテキストを読み込んでファイルに保存する
private fun saveTextToFile(filename: String) {
val editText = findViewById<EditText>(R.id.editTextTextMultiLine)
val text = editText.text.toString()
File(applicationContext.filesDir, filename).writer().use {
it.write(text)
}
}
// ファイルからテキストを読み込んで `editText` に保存する
private fun loadTextFromFile(filename: String) {
val file = File(applicationContext.filesDir, filename)
if (file.exists()) {
val editText = findViewById<EditText>(R.id.editTextTextMultiLine)
editText.setText(file.readText())
}
}
}