Изучаю хранение данных в Android по книге Saving Data on Android от raywenderlich.
В их примере используется методы вот такого репозитория.
class ExternalFileRepository(var context: Context) :
NoteRepository {
override fun addNote(note: Note) {
if (isExternalStorageWritable()) {
FileOutputStream(noteFile(note.fileName)).use { output ->
output.write(note.noteText.toByteArray())
}
}
}
override fun getNote(fileName: String): Note {
val note = Note(fileName, "")
if (isExternalStorageReadable()) {
FileInputStream(noteFile(fileName)).use { stream ->
val text = stream.bufferedReader().use {
it.readText()
}
note.noteText = text
}
}
return note
}
override fun deleteNote(fileName: String): Boolean {
return isExternalStorageWritable() && noteFile(fileName).delete()
}
private fun noteDirectory(): File? = context.getExternalFilesDir(null)
private fun noteFile(fileName: String): File = File(noteDirectory(), fileName)
fun isExternalStorageWritable(): Boolean {
return Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED
}
fun isExternalStorageReadable(): Boolean {
return Environment.getExternalStorageState() in
setOf(Environment.MEDIA_MOUNTED, Environment.MEDIA_MOUNTED_READ_ONLY)
}
}
Разрешение в манифесте
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Проблема в том, что файл не сохраняется по пути
sdcard/data/app_name, да и вообще никуда не сохраняется.
смартфон - Meizu m8, Android 8.1 Oreo
В чем может быть проблема?
Метод
isExternalStorageWritable() возвращает true, и код записи файла отрабатывает.