Я разрабатываю приложение Vault, которое маскирует себя как калькулятор; Когда на клавиатуре введен секретный код, и нажата кнопка '=', страница Vault открывается. Полем URI с выбранными изображениями передается функции для копирования изображений во внутреннюю хранилище, а затем удалить их из внешнего хранилища. .delete (uri), я получаю эту ошибку, не найденную ошибку в Logcact, и изображение не удалено из внешнего хранилища < /p>
Вот полный фрагмент функции: < /p>
fun moveMediaToInternalStorage(context: Context, uris: List) {
uris.forEach { uri ->
Log.d("URI", "$uri")
try {
val inputStream = context.contentResolver.openInputStream(uri)
?: throw IOException("Unable to open input stream for URI: $uri")
val cursor = context.contentResolver.query(uri, null, null, null, null)
val displayName = cursor?.use {
if (it.moveToFirst()) it.getString(it.getColumnIndexOrThrow(OpenableColumns.DISPLAY_NAME))
else "file_${System.currentTimeMillis()}"
} ?: "file_${System.currentTimeMillis()}"
val targetFile = File(context.filesDir, displayName)
context.openFileOutput(displayName, Context.MODE_PRIVATE).use { outputStream ->
inputStream.use { input ->
input.copyTo(outputStream)
}
}
// Delete the original file from external storage after copying
context.contentResolver.delete(uri, null, null)
} catch (e: Exception) {
Log.e("InternalStorage", "Error saving file: ${e.message}", e)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-android