Self-Update App: Update-Dialog, Installation & App-Start-Integration #85

Closed
opened 2026-05-17 00:22:56 +00:00 by jreinemann-euris · 0 comments
jreinemann-euris commented 2026-05-17 00:22:56 +00:00 (Migrated from github.com)

Feature: App – Update-Dialog, Installation & App-Start-Integration

Part of: #69
Depends on: Server-Ticket (Version-Endpoint) und App-Data-Layer-Ticket (UpdateRepository, CheckForUpdateUseCase)

Ziel

Die App zeigt beim Start einen nicht-blockierenden Banner wenn ein Update verfügbar ist. Der Nutzer kann die APK herunterladen und den Android-Installer starten.

Scope

  • REQUEST_INSTALL_PACKAGES-Permission im AndroidManifest
  • FileProvider-Pfad für cache/update/ in file_paths.xml ergänzen
  • UpdateViewModel: State-Management für Update-Check, Download-Progress, Installation
  • UpdateBanner (Composable): Nicht-blockierender Banner mit "Jetzt aktualisieren"-Button
  • Download-Progress-Anzeige (LinearProgressIndicator im Banner)
  • Intent(Intent.ACTION_VIEW) mit FileProvider-URI und application/vnd.android.package-archive MIME-Type
  • Integration in MainScreen: Update-Check beim App-Start, Banner über dem Content
  • Prüfung nur wenn Server-URL konfiguriert ist (opt-in)

Technische Hinweise

  • Bestehende MainActivity nutzt lifecycleScope für Seed, ähnlich für Update-Check möglich
  • FileProvider-Authority: de.krisenvorrat.app.fileprovider (bereits konfiguriert)
  • file_paths.xml existiert bereits mit exports/ und camera/update/ ergänzen
  • Android 8+ erfordert REQUEST_INSTALL_PACKAGES und einmalige User-Bestätigung
  • Intent.FLAG_GRANT_READ_URI_PERMISSION setzen für FileProvider-URI
  • ACTION_VIEW statt ACTION_INSTALL_PACKAGE (deprecated seit API 29)

Akzeptanzkriterien

  • App zeigt nach Start einen nicht-blockierenden Banner wenn Update verfügbar
  • Banner zeigt Versionsnummer des verfügbaren Updates
  • "Jetzt aktualisieren" startet Download mit Fortschrittsanzeige
  • Nach Download wird der Android-Installer geöffnet
  • Kein Update-Check wenn keine Server-URL konfiguriert ist
  • Banner kann vom Nutzer geschlossen/ignoriert werden
  • Tests für UpdateViewModel (Update verfügbar, kein Update, Fehler, Download-Fortschritt)
## Feature: App – Update-Dialog, Installation & App-Start-Integration Part of: #69 Depends on: Server-Ticket (Version-Endpoint) und App-Data-Layer-Ticket (UpdateRepository, CheckForUpdateUseCase) ### Ziel Die App zeigt beim Start einen nicht-blockierenden Banner wenn ein Update verfügbar ist. Der Nutzer kann die APK herunterladen und den Android-Installer starten. ### Scope - `REQUEST_INSTALL_PACKAGES`-Permission im AndroidManifest - FileProvider-Pfad für `cache/update/` in `file_paths.xml` ergänzen - `UpdateViewModel`: State-Management für Update-Check, Download-Progress, Installation - `UpdateBanner` (Composable): Nicht-blockierender Banner mit "Jetzt aktualisieren"-Button - Download-Progress-Anzeige (LinearProgressIndicator im Banner) - `Intent(Intent.ACTION_VIEW)` mit FileProvider-URI und `application/vnd.android.package-archive` MIME-Type - Integration in `MainScreen`: Update-Check beim App-Start, Banner über dem Content - Prüfung nur wenn Server-URL konfiguriert ist (opt-in) ### Technische Hinweise - Bestehende `MainActivity` nutzt `lifecycleScope` für Seed, ähnlich für Update-Check möglich - FileProvider-Authority: `de.krisenvorrat.app.fileprovider` (bereits konfiguriert) - `file_paths.xml` existiert bereits mit `exports/` und `camera/` – `update/` ergänzen - Android 8+ erfordert `REQUEST_INSTALL_PACKAGES` und einmalige User-Bestätigung - `Intent.FLAG_GRANT_READ_URI_PERMISSION` setzen für FileProvider-URI - `ACTION_VIEW` statt `ACTION_INSTALL_PACKAGE` (deprecated seit API 29) ### Akzeptanzkriterien - [ ] App zeigt nach Start einen nicht-blockierenden Banner wenn Update verfügbar - [ ] Banner zeigt Versionsnummer des verfügbaren Updates - [ ] "Jetzt aktualisieren" startet Download mit Fortschrittsanzeige - [ ] Nach Download wird der Android-Installer geöffnet - [ ] Kein Update-Check wenn keine Server-URL konfiguriert ist - [ ] Banner kann vom Nutzer geschlossen/ignoriert werden - [ ] Tests für UpdateViewModel (Update verfügbar, kein Update, Fehler, Download-Fortschritt)
Sign in to join this conversation.
No description provided.