Files
IKAR/ANDROID_PERMISSIONS.md

27 lines
1.9 KiB
Markdown

# Android permission matrix
The machine-readable source of truth is [`tool/android_permissions.json`](tool/android_permissions.json). CI tests require every permission in the main Android manifest to have one owner, feature and trigger.
Triggers have these meanings:
- `user_action`: Android permission or settings UI may be requested only after a related tap, toggle or confirmed WebView prompt.
- `feature_enabled`: background behavior may start only after the user enables the feature.
- `active_feature`: the permission is used only while the related feature is active.
- `system`: install-time capability without a runtime prompt.
| Area | Permissions | User-visible entry point |
| --- | --- | --- |
| Transport | `INTERNET`, `ACCESS_NETWORK_STATE` | Login and normal messaging |
| Updates | `REQUEST_INSTALL_PACKAGES` | Confirmed update installation |
| Camera and audio | `CAMERA`, `RECORD_AUDIO`, `MODIFY_AUDIO_SETTINGS` | Attachment camera, voice/video note, QR scanner or call |
| Location | `ACCESS_FINE_LOCATION`, `ACCESS_COARSE_LOCATION` | Location attachment; legacy BLE contact exchange |
| Bluetooth and NFC | `BLUETOOTH*`, `NFC` | Contact exchange sheet |
| Notifications | `POST_NOTIFICATIONS`, `VIBRATE`, `WAKE_LOCK` | Notification settings or active notification feature |
| Foreground services | `FOREGROUND_SERVICE*` | Enabled FKM, active call, screen sharing, or audio playback started by the user |
| Background startup | `RECEIVE_BOOT_COMPLETED` | Previously enabled FKM only |
| Special settings | `REQUEST_IGNORE_BATTERY_OPTIMIZATIONS`, `USE_FULL_SCREEN_INTENT` | Separate confirmation in notification settings |
| Media library | `READ_EXTERNAL_STORAGE`, `READ_MEDIA_*` | Attachment picker or explicit save action |
| Contacts | `READ_CONTACTS` | Optional phonebook-name feature |
WebView camera, microphone and location requests additionally require an HTTPS allowlisted origin and a per-request confirmation dialog.