Skip to main content

Android Permissions

These are the permissions Colota uses and why. None are related to analytics, advertising, or data collection.

Permission Overview

PermissionRequiredWhy
Fine LocationYesGPS-based location tracking
Coarse LocationYesNetwork-based location fallback
Background LocationYesTrack while app is in the background
Foreground ServiceYesRequired by Android for background services
Foreground Service (Data Sync)YesAuto-export background processing
InternetYesSend locations to your server
Network StateYesCheck connectivity before syncing
Boot CompletedYesAuto-restart tracking after device reboot
NotificationsAndroid 13+Display the foreground service notification
Local Network AccessAndroid 17+Access local network servers (self-hosted)
Battery Optimization ExemptionOptionalPrevent Android from killing the tracking service

Permission Request Flow

When you start tracking for the first time, Colota requests permissions in sequence:

  1. Fine Location - Required to access GPS hardware
  2. Background Location (Android 10+) - Appears as a separate dialog asking to "Allow all the time"
  3. Notification Permission (Android 13+) - Required for the foreground service notification
  4. Battery Optimization Exemption - Optional dialog to prevent the system from restricting the app

If any required permission is denied, tracking cannot start. The app does not request permissions until you explicitly tap "Start Tracking".

The Local Network Permission (Android 17+) is not part of this sequence. It is requested separately when you use Test Connection with a local/private server endpoint.

Detailed Explanations

Location Permissions

android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_BACKGROUND_LOCATION

Fine Location provides GPS-level accuracy (typically 3-10 meters). Coarse Location is declared as a fallback but fine location is always preferred. Background Location allows the foreground service to continue receiving GPS updates when the app is not in the foreground.

Foreground Service

android.permission.FOREGROUND_SERVICE
android.permission.FOREGROUND_SERVICE_LOCATION
android.permission.FOREGROUND_SERVICE_DATA_SYNC

Android requires apps to declare a foreground service with a persistent notification to run in the background. The FOREGROUND_SERVICE_LOCATION type specifically indicates the service accesses location data. This is what keeps the "Colota is tracking" notification visible. The FOREGROUND_SERVICE_DATA_SYNC type is used by the auto-export WorkManager service for scheduled background exports.

Network

android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE

Internet is needed to POST location data to your configured server endpoint. Network State lets the app check for connectivity before attempting to sync, avoiding unnecessary failures.

Boot Completed

android.permission.RECEIVE_BOOT_COMPLETED

If tracking was active when the device was powered off, Colota automatically restarts the foreground service after boot. This is handled by LocationBootReceiver.

Notifications

android.permission.POST_NOTIFICATIONS

Starting with Android 13, apps must request notification permission explicitly. Colota uses a foreground service for GPS tracking, which requires a persistent notification. Without this permission, the service cannot start - including after a device reboot.

Local Network Access

android.permission.ACCESS_LOCAL_NETWORK

Starting with Android 17, apps need this permission to connect to devices on the local network. Colota requests it when you use Test Connection with a private/local IP endpoint (e.g. 192.168.x.x, 10.x.x.x, 172.16-31.x.x, or 100.64.x.x). Loopback addresses (localhost / 127.0.0.1) do not require this permission. If your server is a public HTTPS endpoint, this permission is never requested.

Android 16

On some Android 16 devices, local network access may be enforced early via security patches. In this case, Android uses the Nearby Wi-Fi Devices (NEARBY_WIFI_DEVICES) permission instead. If your local server is unreachable on Android 16, go to Android Settings > Apps > Colota > Permissions and enable Nearby devices manually.

Battery Optimization

android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

This allows Colota to show the system dialog asking to exempt the app from battery optimization (Doze mode). When exempted, Android is less likely to kill the tracking service during idle periods. This is optional - tracking works without it, but may be less reliable on some devices.

Revoking Permissions

You can revoke any permission at any time through Android Settings → Apps → Colota → Permissions. Revoking location permissions will stop tracking. Other permissions can be toggled without affecting the core tracking functionality.