Android Studio: не удалось открыть: EACCES (отказано в разрешении) только для некоторых файлов в одном каталогеAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android Studio: не удалось открыть: EACCES (отказано в разрешении) только для некоторых файлов в одном каталоге

Сообщение Anonymous »

Я создаю приложение, которое может преобразовывать объекты в JSON, чтобы их можно было импортировать/просматривать в приложении на другом устройстве. Я получаю эту ошибку только при просмотре файлов, созданных приложением, на другом устройстве. У меня есть доступ к папке, в которой находится этот текстовый файл, поскольку я могу создавать и записывать файлы одного типа (txt с JSON) в этой папке и читать файлы, созданные приложением на этом устройстве.В манифесте у меня есть следующее: И android:requestLegacyExternalStorage="true" в теге


[/code]
И вот как я читаю текстовые файлы:

Код: Выделить всё

val docFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
val exportsFold = File(docFolder, "ToeApp Exported Reports")

fun makeExportsFolder(){
if (!exportsFold.exists()){
exportsFold.mkdirs()
}
if (!toeAppDir.exists()){
val makecheck = toeAppDir.mkdirs()
Log.i("create File", "MakeCheck: $makecheck")
}
}
fun getExpRep(uri: Uri, context: Context): ExportedRep?{
val docFile = fromSingleUri(context, uri)
val name = docFile?.name
val path = uri.path?.split("/")
Log.i("Path last seg" , "${path?.last()}")
Log.i("file name" , "${name}")

Log.i("Path check", exportsFold.path)

if (name.isNotNull()){
try {
val filePath = File(exportsFold , name)
Log.i("path check" , "Filepath: $filePath")
val content = ByteArray(filePath.length().toInt())
val stream = FileInputStream(filePath)
stream.read(content)
val repJSON = content.decodeToString()
val expRep = Gson().fromJson(repJSON, ExportedRep::class.java)
return expRep
}
catch(e: Exception){
e.printStackTrace()
Toast.makeText(context, "Select Exported Report", Toast.LENGTH_SHORT).show()
return null
}

}
else return  null

Как уже упоминалось, приложение может читать/записывать JSON ExportedRep в той же папке, поэтому я не думаю, что это проблема с разрешением. Исключение выдается только при попытке прочитать файл, созданный приложением, на другом устройстве. Я тестирую два устройства под управлением Android 14.

Код: Выделить всё

java.io.FileNotFoundException: /storage/emulated/0/Documents/ToeApp Exported Reports/Exported_Bruce Wayne_27_06_2024.txt: open failed: EACCES (Permission denied)
Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/789 ... files-in-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»