Permissions
OpenVitals asks for permissions by purpose. The local app removes inherited network permissions during manifest merge and should not ship app-level INTERNET, network-state, or Wi-Fi-state permissions.
This page mirrors the current permission surface declared in app/src/main/AndroidManifest.xml.
Health Connect Read Permissions
Used to show records in the dashboard, metric detail screens, readiness, statistics, achievements, and insights:
android.permission.health.READ_STEPSandroid.permission.health.READ_DISTANCEandroid.permission.health.READ_EXERCISEandroid.permission.health.READ_EXERCISE_ROUTESandroid.permission.health.READ_SLEEPandroid.permission.health.READ_HEART_RATEandroid.permission.health.READ_RESTING_HEART_RATEandroid.permission.health.READ_HEART_RATE_VARIABILITYandroid.permission.health.READ_WEIGHTandroid.permission.health.READ_HEIGHTandroid.permission.health.READ_BODY_FATandroid.permission.health.READ_LEAN_BODY_MASSandroid.permission.health.READ_BASAL_METABOLIC_RATEandroid.permission.health.READ_BONE_MASSandroid.permission.health.READ_BODY_WATER_MASSandroid.permission.health.READ_FLOORS_CLIMBEDandroid.permission.health.READ_ACTIVE_CALORIES_BURNEDandroid.permission.health.READ_ELEVATION_GAINEDandroid.permission.health.READ_WHEELCHAIR_PUSHESandroid.permission.health.READ_TOTAL_CALORIES_BURNEDandroid.permission.health.READ_SPEEDandroid.permission.health.READ_POWERandroid.permission.health.READ_STEPS_CADENCEandroid.permission.health.READ_CYCLING_PEDALING_CADENCEandroid.permission.health.READ_PLANNED_EXERCISEandroid.permission.health.READ_HYDRATIONandroid.permission.health.READ_NUTRITIONandroid.permission.health.READ_MINDFULNESSandroid.permission.health.READ_BLOOD_PRESSUREandroid.permission.health.READ_OXYGEN_SATURATIONandroid.permission.health.READ_RESPIRATORY_RATEandroid.permission.health.READ_BODY_TEMPERATUREandroid.permission.health.READ_VO2_MAXandroid.permission.health.READ_BLOOD_GLUCOSEandroid.permission.health.READ_SKIN_TEMPERATURE
Cycle Tracking Read Permissions
Cycle data is sensitive. These permissions are grouped separately in onboarding and Settings so users can grant or skip them explicitly:
android.permission.health.READ_MENSTRUATIONandroid.permission.health.READ_OVULATION_TESTandroid.permission.health.READ_CERVICAL_MUCUSandroid.permission.health.READ_BASAL_BODY_TEMPERATUREandroid.permission.health.READ_INTERMENSTRUAL_BLEEDINGandroid.permission.health.READ_SEXUAL_ACTIVITY
Health Connect Write Permissions
Declared for explicit save, edit/delete, recording, and supported import workflows. Write permissions should be requested only when a workflow needs them:
android.permission.health.WRITE_STEPSandroid.permission.health.WRITE_EXERCISEandroid.permission.health.WRITE_SLEEPandroid.permission.health.WRITE_EXERCISE_ROUTEandroid.permission.health.WRITE_DISTANCEandroid.permission.health.WRITE_ELEVATION_GAINEDandroid.permission.health.WRITE_ACTIVE_CALORIES_BURNEDandroid.permission.health.WRITE_TOTAL_CALORIES_BURNEDandroid.permission.health.WRITE_HEART_RATEandroid.permission.health.WRITE_RESTING_HEART_RATEandroid.permission.health.WRITE_HEART_RATE_VARIABILITYandroid.permission.health.WRITE_WEIGHTandroid.permission.health.WRITE_HEIGHTandroid.permission.health.WRITE_BODY_FATandroid.permission.health.WRITE_LEAN_BODY_MASSandroid.permission.health.WRITE_BASAL_METABOLIC_RATEandroid.permission.health.WRITE_BONE_MASSandroid.permission.health.WRITE_BODY_WATER_MASSandroid.permission.health.WRITE_FLOORS_CLIMBEDandroid.permission.health.WRITE_WHEELCHAIR_PUSHESandroid.permission.health.WRITE_SPEEDandroid.permission.health.WRITE_POWERandroid.permission.health.WRITE_STEPS_CADENCEandroid.permission.health.WRITE_CYCLING_PEDALING_CADENCEandroid.permission.health.WRITE_PLANNED_EXERCISEandroid.permission.health.WRITE_HYDRATIONandroid.permission.health.WRITE_NUTRITIONandroid.permission.health.WRITE_MINDFULNESSandroid.permission.health.WRITE_BLOOD_PRESSUREandroid.permission.health.WRITE_OXYGEN_SATURATIONandroid.permission.health.WRITE_RESPIRATORY_RATEandroid.permission.health.WRITE_BODY_TEMPERATUREandroid.permission.health.WRITE_VO2_MAXandroid.permission.health.WRITE_BLOOD_GLUCOSEandroid.permission.health.WRITE_MENSTRUATIONandroid.permission.health.WRITE_OVULATION_TESTandroid.permission.health.WRITE_CERVICAL_MUCUSandroid.permission.health.WRITE_BASAL_BODY_TEMPERATUREandroid.permission.health.WRITE_INTERMENSTRUAL_BLEEDINGandroid.permission.health.WRITE_SEXUAL_ACTIVITY
Health Connect Access Modes
android.permission.health.READ_HEALTH_DATA_HISTORY: used when the user grants access to older records.android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND: used where supported for background Health Connect reads.
Android Runtime Permissions
android.permission.ACCESS_FINE_LOCATION: required for reliable GPS activity recording.android.permission.ACCESS_COARSE_LOCATION: declared with location access for Android permission compatibility.android.permission.ACTIVITY_RECOGNITION: used where Android requires activity-recognition access for recorded activity workflows.android.permission.BLUETOOTH_SCAN: used to find paired Bluetooth LE sensors for experimental activity recording.android.permission.BLUETOOTH_CONNECT: used to connect to paired Bluetooth LE sensors for experimental activity recording.android.permission.FOREGROUND_SERVICE: used for foreground activity recording and user-started import work.android.permission.FOREGROUND_SERVICE_DATA_SYNC: marks long-running Apple Health imports as user-started data sync work.android.permission.FOREGROUND_SERVICE_LOCATION: marks the recording service as location-based.android.permission.FOREGROUND_SERVICE_HEALTH: marks the recording service as health-related where Android supports it.android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE: marks recording with connected Bluetooth LE devices where Android supports it.android.permission.HIGH_SAMPLING_RATE_SENSORS: supports higher-rate sensor access for activity recording on devices that expose it.android.permission.POST_NOTIFICATIONS: used for activity recording, Apple Health import progress, and reminder notifications.android.permission.RECEIVE_BOOT_COMPLETED: used to reschedule reminders after reboot or app update.
Removed Network Permissions
The manifest explicitly removes inherited network permissions from dependencies:
android.permission.INTERNETandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATE
These removals preserve the local app’s internet-free boundary.
File And Route Intents
OpenVitals can receive GPX, KML, KMZ, and FIT files through Android open/share intents so imported activities can be reviewed and saved to Health Connect. FIT files can also be selected from Settings, Data Importers. PMTiles and Mapsforge map packs are imported from Settings for offline activity maps.
The app uses a local file provider to export route files, such as GPX or KMZ, to other apps.