diff --git a/app/src/main/java/de/medapp/wunddoku/media/PhotoStorage.kt b/app/src/main/java/de/medapp/wunddoku/media/PhotoStorage.kt index 156993a..43db5cc 100644 --- a/app/src/main/java/de/medapp/wunddoku/media/PhotoStorage.kt +++ b/app/src/main/java/de/medapp/wunddoku/media/PhotoStorage.kt @@ -108,10 +108,17 @@ class InternalPhotoStorage(private val context: Context) : PhotoStorage { val resolver = context.contentResolver // 1) Nur die Abmessungen ermitteln (inJustDecodeBounds), ohne Pixel zu laden. + // + // WICHTIG: BitmapFactory.decodeStream(...) liefert bei inJustDecodeBounds = true + // IMMER null zurück (es befüllt nur boundsOptions, gibt aber nie ein Bitmap zurück). + // Die Null-Prüfung muss sich deshalb auf den STREAM selbst beziehen, nicht auf das + // (stets null-wertige) Ergebnis von decodeStream() - sonst würde jeder Import- + // Versuch fälschlich als "Bild konnte nicht geöffnet werden" fehlschlagen, komplett + // unabhängig vom tatsächlichen Bild. val boundsOptions = BitmapFactory.Options().apply { inJustDecodeBounds = true } - resolver.openInputStream(sourceUri)?.use { input -> - BitmapFactory.decodeStream(input, null, boundsOptions) - } ?: error("Bild konnte nicht geöffnet werden (Uri nicht mehr gültig?).") + val boundsStream = resolver.openInputStream(sourceUri) + ?: error("Bild konnte nicht geöffnet werden (Uri nicht mehr gültig?).") + boundsStream.use { input -> BitmapFactory.decodeStream(input, null, boundsOptions) } if (boundsOptions.outWidth <= 0 || boundsOptions.outHeight <= 0) { error("Bildabmessungen konnten nicht ermittelt werden - vermutlich kein unterstütztes Bildformat.") diff --git a/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditViewModel.kt b/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditViewModel.kt index 5bb4e62..8c1af9a 100644 --- a/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditViewModel.kt +++ b/app/src/main/java/de/medapp/wunddoku/ui/documentation/edit/DocumentationEditViewModel.kt @@ -170,6 +170,12 @@ class DocumentationEditViewModel( repository.addPhoto(documentationId, uri) } catch (e: Exception) { failureCount++ + // Bewusst OHNE Uri/Dateipfad geloggt (Datenschutz-Vorgabe: keine Bild-Uris/ + // Dateipfade in Logs) - die Exception-Nachricht selbst genügt zur Diagnose. + android.util.Log.w( + "DocumentationEdit", + "Fotoimport fehlgeschlagen: ${e::class.simpleName}: ${e.message}", + ) } } val refreshed = repository.getFullDocumentation(documentationId)