Files
simple-notes-sync/android
inventory69 933646f28b Fix: Add missing permissions and runtime permission handling for auto-sync
Critical fixes for SSID detection on Android 12+:
- Add CHANGE_WIFI_STATE permission (NetworkCallback registration)
- Add ACCESS_BACKGROUND_LOCATION permission (SSID access)
- Add FOREGROUND_SERVICE_DATA_SYNC permission

SettingsActivity improvements:
- Add checkBackgroundLocationPermission() method
- Show dialog explaining need for 'Always allow' location
- Request permission with proper callbacks
- Better user feedback for permission grants/denials

NetworkMonitor improvements:
- Add initial WiFi check in startMonitoring()
- Add NET_CAPABILITY_INTERNET to NetworkRequest
- Better error handling for '<unknown ssid>' cases
- Log warning about missing BACKGROUND_LOCATION permission

This should fix the root cause: SSID was showing as '<unknown ssid>'
because app lacked background location permission on Android 16.
User must select 'Always allow' when prompted for location permission.
2025-12-20 21:30:56 +01:00
..

Simple Notes - Android App

🚧 Development Setup

Voraussetzungen

  • Android Studio Hedgehog (2023.1.1) oder neuer
  • JDK 17
  • Android SDK 34
  • Min SDK 24

Projekt in Android Studio öffnen

# In Android Studio:
# File → New → New Project
# Template: Empty Views Activity
# 
# Settings:
# Name: Simple Notes
# Package: com.example.simplenotes
# Save location: /home/liq/gitProjects/simple-notes-sync/android/
# Language: Kotlin
# Minimum SDK: API 24
# Build configuration: Kotlin DSL

Dependencies

Siehe ANDROID_GUIDE.md in project-docs für vollständige build.gradle.kts:

Hauptabhängigkeiten:

  • Sardine Android (WebDAV Client)
  • Kotlin Coroutines
  • Gson (JSON)
  • WorkManager (Background Sync)
  • Material Design Components

Projektstruktur

android/
└── app/
    └── src/
        └── main/
            ├── AndroidManifest.xml
            ├── java/com/example/simplenotes/
            │   ├── MainActivity.kt
            │   ├── NoteEditorActivity.kt
            │   ├── SettingsActivity.kt
            │   ├── models/
            │   │   ├── Note.kt
            │   │   └── SyncStatus.kt
            │   ├── storage/
            │   │   └── NotesStorage.kt
            │   ├── sync/
            │   │   ├── WebDavSyncService.kt
            │   │   ├── WifiSyncReceiver.kt
            │   │   ├── SyncWorker.kt
            │   │   └── ConflictResolver.kt
            │   ├── adapters/
            │   │   └── NotesAdapter.kt
            │   └── utils/
            │       ├── DeviceIdGenerator.kt
            │       ├── NotificationHelper.kt
            │       ├── Extensions.kt
            │       └── Constants.kt
            └── res/
                ├── layout/
                ├── values/
                └── drawable/

📖 Development Guide

Vollständige Code-Beispiele und Implementation:

🏗️ Build

# Debug Build
./gradlew assembleDebug

# Release Build
./gradlew assembleRelease

# Install on connected device
./gradlew installDebug

🧪 Testing

# Run unit tests
./gradlew test

# Run instrumented tests
./gradlew connectedAndroidTest

📝 TODO

  • Projekt in Android Studio erstellen
  • Dependencies einrichten
  • Models implementieren (Note.kt, SyncStatus.kt)
  • Storage Layer (NotesStorage.kt)
  • UI Layouts erstellen
  • Activities implementieren
  • Sync Service (WebDavSyncService.kt)
  • WLAN Detection (WifiSyncReceiver.kt)
  • WorkManager Setup (SyncWorker.kt)
  • Notifications (NotificationHelper.kt)
  • Error Handling
  • Testing

Next Step: Projekt in Android Studio erstellen und Code aus ANDROID_GUIDE.md übernehmen.