#android #saf
#Android #saf
Вопрос:
Это просто сделать в любой системе, кроме Android, но у меня есть и приложение, которому необходимо создать файл csv в ОБЩЕЙ ВНЕШНЕЙ папке загрузки. Выключите / перезапустите телефон / приложение, и файл сохранится. Затем мне нужно удалить файл (постоянный URI где-нибудь?), Прежде чем я воссоздам его с новыми данными. (если существует () удалить)
Я вижу все виды документов, указывающих на SAF для этого процесса, но нигде не могу найти примеров того, как выполнить этот простой процесс создания / удаления. Если это можно сделать на API 28 и это работает на 29 , это было бы здорово.
Без SAF я сделал это:
fun writeCSV() {
val CSV_HEADER = "Last,Firstn"
val mockData = "Tester,Joen"
val contentValues = ContentValues()
contentValues.put(MediaStore.Downloads.DISPLAY_NAME, "aTest.csv")
contentValues.put(MediaStore.Downloads.MIME_TYPE, "text/csv")
contentValues.put(MediaStore.Downloads.IS_PENDING, true)
val uri = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
val fileUri = contentResolver.insert(uri, contentValues)
if (fileUri != null) {
try {
val outputStream = contentResolver.openOutputStream(fileUri)
outputStream!!.write(CSV_HEADER.toByteArray())
outputStream!!.write(mockData.toByteArray())
outputStream!!.close()
contentValues.put(MediaStore.Images.Media.IS_PENDING, false)
contentResolver.update(fileUri, contentValues, null, null)
} catch (e: IOException) {
e.printStackTrace()
}
}
}
Проблема в том, что когда fun вызывается снова, мне нужно удалить этот файл и воссоздать его с новыми данными, потому что Android создает «ATest (1).csv» вместо перезаписи.
Комментарии:
1. «Я вижу все виды документов, указывающих на SAF для этого процесса» — платформа доступа к хранилищу предназначена для того, чтобы пользователь мог контролировать, куда на устройстве пользователя (или в облачном хранилище пользователя) пользователь хочет, чтобы ваше приложение помещало данные пользователя. Похоже, это не то, что вы хотите. Вы можете попробовать
MediaStore.Downloads
, что может подойти для вашего сценария.2. Интересно, что вы могли бы его создать. Если вы можете создать файл, вы также можете его удалить.
3. Как? Повторяю: если вы можете создать файл, вы можете его удалить.
4. @blackapps Как я могу удалить созданный файл? Это мой первоначальный вопрос. Сказать, что я могу (после сбоя / перезагрузки), бесполезно. Пожалуйста, покажите, как получить uri существующего файла в известном месте с известным именем.
5.
How can I delete a file that has been created?
Неправильный вопрос. Предполагалось, что вы (ваше приложение) создали файл для начала. Перечитайте мои комментарии. И если ваше приложение создало файл, начните показывать свой код.