- Java 100%
| android-app | ||
| gradle | ||
| .gitignore | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
Mängelmelder Erfurt Android
Native Android-App für den Mängelmelder der Landeshauptstadt Erfurt:
https://maengelmelder.erfurt.de/
Die App nutzt die vorhandenen FixMyStreet-Endpunkte der Website und sendet Meldungen als nicht eingeloggter Nutzer. Nach dem Absenden läuft der normale Bestätigungsprozess der Website per E-Mail.
Funktionen
- neue Mängelmeldung mit Titel, Beschreibung und Kategorie
- automatische Standortermittlung über Android
LocationManager - Kategorieabfrage passend zur aktuellen Position
- Fotoaufnahme per Kamera und Upload als Multipart-Feld
photo1 - Einstellungen für dauerhaft hinterlegten Namen und E-Mailadresse
- Option, ob der Name öffentlich angezeigt werden darf
Projektstruktur
.
├── android-app/
│ ├── README.md
│ └── app/
│ ├── build.gradle
│ └── src/main/
├── build.gradle
├── gradle.properties
├── gradle/
├── gradlew
├── gradlew.bat
└── settings.gradle
Das Gradle-Modul heißt :app; sein Projektverzeichnis ist android-app/app.
Voraussetzungen
- JDK 17
- Android SDK mit Compile SDK 36
- Internetzugriff für Gradle-Abhängigkeiten, falls sie noch nicht lokal im Cache liegen
- Android-Gerät oder Emulator zum Installieren/Testen
Build
Debug-APK bauen:
./gradlew :app:assembleDebug
Das APK liegt danach unter:
android-app/app/build/outputs/apk/debug/app-debug.apk
Installation auf einem angeschlossenen Gerät:
adb install -r android-app/app/build/outputs/apk/debug/app-debug.apk
Tests und Checks
Kompilierung prüfen:
./gradlew :app:compileDebugJavaWithJavac
Lint ausführen:
./gradlew :app:lintDebug
Endpunkte
Die App spricht aktuell direkt https://maengelmelder.erfurt.de an.
- Kategorien:
GET /report/new/ajax?latitude=...&longitude=... - Meldung senden:
POST /report/new/mobile
Die Basis-URL ist in MaengelmelderApi.java als Konstante hinterlegt.
Datenschutz und lokale Daten
Name und E-Mailadresse werden lokal in SharedPreferences gespeichert, damit sie nicht bei jeder Meldung neu eingegeben werden müssen. Diese Werte sind funktionale Nutzereinstellungen und keine im Repository enthaltenen Zugangsdaten.
Fotos werden vor dem Versand im privaten App-Dateibereich abgelegt. Die App enthält keine API-Keys, Keystores, Passwörter oder Tokens.
Git-Hygiene
Die .gitignore schließt lokale und generierte Dateien aus, insbesondere:
.gradle/**/build/local.properties- Android-Studio-Dateien
- APK/AAB-Artefakte
- lokale Codex/Agent-Metadaten