Automotive permissions documentation.
Updated all Android Automotive permissions from system|signature to
signature|privileged (system has been deprecated in Android O).
Add comments to permissions that can be rendered as javadocs.
Bug: 130664437
Bug: 118814598
Test: N/A
Change-Id: I3fc506ac0b869f0ed42349a96155c42903be651a
diff --git a/service/AndroidManifest.xml b/service/AndroidManifest.xml
index 8d37772..62ae31a 100644
--- a/service/AndroidManifest.xml
+++ b/service/AndroidManifest.xml
@@ -21,257 +21,451 @@
android:sharedUserId="android.uid.system">
<original-package android:name="com.android.car" />
- <permission-group
+
+ <!-- Used for runtime permissions related to monitoring vehicle information. -->
+ <permission-group
android:name="android.car.permission-group.CAR_MONITORING"
android:icon="@drawable/perm_group_car"
android:description="@string/car_permission_desc"
android:label="@string/car_permission_label" />
+
+ <!-- Allows an application to read the vehicle energy information.
+ <p>Protection level: dangerous
+ -->
<permission
android:name="android.car.permission.CAR_ENERGY"
android:permissionGroup="android.car.permission-group.CAR_MONITORING"
android:protectionLevel="dangerous"
android:label="@string/car_permission_label_energy"
android:description="@string/car_permission_desc_energy" />
+
+ <!-- Allows an application to read the VIN information.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_IDENTIFICATION"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_identification"
android:description="@string/car_permission_desc_car_identification" />
+
+ <!-- Allows an application to control the vehicle HVAC.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_CLIMATE"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_hvac"
android:description="@string/car_permission_desc_hvac" />
+
+ <!-- Allows an application to control the vehicle doors.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_DOORS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_car_doors"
android:description="@string/car_permission_desc_control_car_doors" />
+
+ <!-- Allows an application to control the vehicle windows.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_WINDOWS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_car_windows"
android:description="@string/car_permission_desc_control_car_windows" />
+
+ <!-- Allows an application to control the vehicle mirrors.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_MIRRORS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_car_mirrors"
android:description="@string/car_permission_desc_control_car_mirrors" />
+
+ <!-- Allows an application to control the vehicle seats.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_SEATS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_car_seats"
android:description="@string/car_permission_desc_control_car_seats" />
+
+ <!-- Allows an application to read the vehicle mileage information.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_MILEAGE"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_mileage"
android:description="@string/car_permission_desc_mileage" />
+
+ <!-- Allows an application to read the vehicle tire pressure information.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_TIRES"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_tires"
android:description="@string/car_permission_desc_car_tires" />
+
+ <!-- Allows an application to read the vehicle steering angle information.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.READ_CAR_STEERING"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_steering"
android:description="@string/car_permission_desc_car_steering" />
+
+ <!-- Allows an application to read the display units for distance, fuel, tire pressure,
+ EV battery and fuel consumption.
+ <p>Protection level: normal
+ -->
<permission
android:name="android.car.permission.READ_CAR_DISPLAY_UNITS"
android:protectionLevel="normal"
android:label="@string/car_permission_label_read_car_display_units"
android:description="@string/car_permission_desc_read_car_display_units" />
+
+ <!-- Allows an application to control the display units for distance, fuel, tire pressure,
+ EV battery and fuel consumption.
+ <p>Protection level: normal
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_DISPLAY_UNITS"
android:protectionLevel="normal"
android:label="@string/car_permission_label_control_car_display_units"
android:description="@string/car_permission_desc_control_car_display_units" />
+
+ <!-- Allows an application to read the vehicle speed.
+ <p>Protection level: dangerous
+ -->
<permission
android:name="android.car.permission.CAR_SPEED"
android:permissionGroup="android.permission-group.LOCATION"
android:protectionLevel="dangerous"
android:label="@string/car_permission_label_speed"
android:description="@string/car_permission_desc_speed" />
+
+ <!-- Allows an application to read the vehicle fuel and charge port status.
+ <p>Protection level: normal
+ -->
<permission
android:name="android.car.permission.CAR_ENERGY_PORTS"
android:protectionLevel="normal"
android:label="@string/car_permission_label_car_energy_ports"
android:description="@string/car_permission_desc_car_energy_ports" />
+
+ <!-- Allows an application to read the vehicle engine information. For example, it allows an
+ application to read the engine oil level, oil temperature, coolant temperature and RPM.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_ENGINE_DETAILED"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_engine_detailed"
android:description="@string/car_permission_desc_car_engine_detailed" />
+
+ <!-- Allows an application to read the vehicle dynamic state information. For example, it
+ allows an application to read the ABS and traction control status.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_DYNAMICS_STATE"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_vehicle_dynamics_state"
android:description="@string/car_permission_desc_vehicle_dynamics_state" />
+
+ <!-- Allows an application to access the vehicle vendor channel to exchange vendor-specific information.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_VENDOR_EXTENSION"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_vendor_extension"
android:description="@string/car_permission_desc_vendor_extension" />
+
+ <!-- Allows an application to project an interface from a phone to the vehicle display.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_PROJECTION"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_projection"
android:description="@string/car_permission_desc_projection" />
+
+ <!-- Allows an application to get the status of other applications projecting to the vehicle display.
+ technologies status changes.
+ <p>Protection level: signature|privileged
+ -->
<permission
- android:name="android.car.permission.ACCESS_CAR_PROJECTION_STATUS"
- android:protectionLevel="system|signature"
- android:label="@string/car_permission_label_access_projection_status"
- android:description="@string/car_permission_desc_access_projection_status" />
+ android:name="android.car.permission.ACCESS_CAR_PROJECTION_STATUS"
+ android:protectionLevel="signature|privileged"
+ android:label="@string/car_permission_label_access_projection_status"
+ android:description="@string/car_permission_desc_access_projection_status" />
+
+ <!-- Must be required by projection service to ensure only system can bind to it.
+ <p>Protection level: signature
+ -->
<permission
- android:name="android.car.permission.BIND_PROJECTION_SERVICE"
- android:protectionLevel="signature"
- android:label="@string/car_permission_label_bind_projection_service"
- android:description="@string/car_permission_desc_bind_projection_service" />
+ android:name="android.car.permission.BIND_PROJECTION_SERVICE"
+ android:protectionLevel="signature"
+ android:label="@string/car_permission_label_bind_projection_service"
+ android:description="@string/car_permission_desc_bind_projection_service" />
+
+ <!-- Allows an application to emulate the vehicle HAL for testing purposes.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_MOCK_VEHICLE_HAL"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_mock_vehicle_hal"
android:description="@string/car_permission_desc_mock_vehicle_hal" />
+
+ <!-- Allows an application to read the vehicle car basic information. For example, it allows
+ an application to read the vehicle Make, Model, Model Year, fuel capacity, fuel type,
+ EV battery capacity, EV connection type, fuel door location and driver seat location.
+ <p>Protection level: normal
+ -->
<permission
android:name="android.car.permission.CAR_INFO"
android:protectionLevel="normal"
android:label="@string/car_permission_label_car_info"
android:description="@string/car_permission_desc_car_info" />
+
+ <!-- Allows an application to read the vehicle exterior environment information. For example,
+ it allows an application to read the vehicle exterior temperature and night mode status.
+ <p>Protection level: normal
+ -->
<permission
android:name="android.car.permission.CAR_EXTERIOR_ENVIRONMENT"
android:protectionLevel="normal"
android:label="@string/car_permission_label_car_exterior_environment"
android:description="@string/car_permission_desc_car_exterior_environment" />
+
+ <!-- Allows an application to read the vehicle exterior lights state.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_EXTERIOR_LIGHTS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_exterior_lights"
android:description="@string/car_permission_desc_car_exterior_lights" />
+
+ <!-- Allows an application to control the vehicle exterior lights.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_car_exterior_lights"
android:description="@string/car_permission_desc_control_car_exterior_lights" />
+
+ <!-- Allows an application to read the vehicle interior lights state.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.READ_CAR_INTERIOR_LIGHTS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_interior_lights"
android:description="@string/car_permission_desc_car_interior_lights" />
+
+ <!-- Allows an application to control the vehicle interior lights state.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_car_interior_lights"
android:description="@string/car_permission_desc_control_car_interior_lights" />
+
+ <!-- Allows an application to control the vehicle power state.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_POWER"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_power"
android:description="@string/car_permission_desc_car_power" />
+
+ <!-- Allows an application to read the vehicle powertrain information. For example, it allows
+ an application to read the vehicle current gear, ignition state or parking break status.
+ <p>Protection level: normal
+ -->
<permission
android:name="android.car.permission.CAR_POWERTRAIN"
android:protectionLevel="normal"
android:label="@string/car_permission_label_car_powertrain"
android:description="@string/car_permission_desc_car_powertrain" />
+
+ <!-- Allows an application to access {@link android.car.navigation.CarNavigationStatusManager}
+ to report navigation data. This information may be displayed by the vehicle in the
+ instrument cluster, head-up display or other locations.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_NAVIGATION_MANAGER"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_car_navigation_manager"
android:description="@string/car_permission_desc_car_navigation_manager" />
+
+ <!-- Allows an application to read vehicle diagnostic information, including vendor-specific
+ information.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_DIAGNOSTICS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_diag_read"
android:description="@string/car_permission_desc_diag_read" />
+
+ <!-- Allows an application to clear diagnostic information from the vehicle.
+ <p>Protection level: signature|privileged
+ -->
<permission
- android:name="android.car.permission.CLEAR_CAR_DIAGNOSTICS"
- android:protectionLevel="system|signature"
- android:label="@string/car_permission_label_diag_clear"
- android:description="@string/car_permission_desc_diag_clear" />
+ android:name="android.car.permission.CLEAR_CAR_DIAGNOSTICS"
+ android:protectionLevel="signature|privileged"
+ android:label="@string/car_permission_label_diag_clear"
+ android:description="@string/car_permission_desc_diag_clear" />
+
+ <!-- Must be required by VMS client service to ensure only system can bind to it.
+ <p>Protection level: signature
+ -->
<permission
android:name="android.car.permission.BIND_VMS_CLIENT"
android:protectionLevel="signature"
android:label="@string/car_permission_label_bind_vms_client"
android:description="@string/car_permission_desc_bind_vms_client" />
+
+ <!-- Allows an application to publich VMS messages.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.VMS_PUBLISHER"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_vms_publisher"
android:description="@string/car_permission_desc_vms_publisher" />
+
+ <!-- Allows an application to subscribe to VMS messages.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.VMS_SUBSCRIBER"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_vms_subscriber"
android:description="@string/car_permission_desc_vms_subscriber" />
+
+ <!-- Allows an application to read the vehicle driving state.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_DRIVING_STATE"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_driving_state"
android:description="@string/car_permission_desc_driving_state" />
+
<!-- may replace this with system permission if proper one is defined. -->
+ <eat-comment />
+ <!-- Allows an application to block other applications for driver distraction purposes.
+ Note: This permission may be replaced in future versions.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CONTROL_APP_BLOCKING"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_control_app_blocking"
android:description="@string/car_permission_desc_control_app_blocking" />
+ <!-- Allows an application to control the vehicle audio volume.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_CONTROL_AUDIO_VOLUME"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_audio_volume"
android:description="@string/car_permission_desc_audio_volume" />
+ <!-- Allows an application to control the vehicle audio settings.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_CONTROL_AUDIO_SETTINGS"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_audio_settings"
android:description="@string/car_permission_desc_audio_settings" />
+ <!-- Must be required by instrument cluster service to ensure only system can bind to it.
+ <p>Protection level: signature
+ -->
<permission
android:name="android.car.permission.BIND_INSTRUMENT_CLUSTER_RENDERER_SERVICE"
android:protectionLevel="signature"
android:label="@string/car_permission_label_bind_instrument_cluster_rendering"
android:description="@string/car_permission_desc_bind_instrument_cluster_rendering"/>
+ <!-- Allows an application to handle the vehicle input events.
+ <p>Protection level: signature
+ -->
<permission
android:name="android.car.permission.BIND_CAR_INPUT_SERVICE"
android:protectionLevel="signature"
android:label="@string/car_permission_label_bind_input_service"
android:description="@string/car_permission_desc_bind_input_service"/>
+ <!-- Allows an application to declare activities to be displayed in the instrument cluster.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_DISPLAY_IN_CLUSTER"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_car_display_in_cluster"
android:description="@string/car_permission_desc_car_display_in_cluster" />
+ <!-- Allows an application to lunch applications in the instrument cluster.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_INSTRUMENT_CLUSTER_CONTROL"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_car_cluster_control"
android:description="@string/car_permission_desc_car_cluster_control" />
+ <!-- Allows an application to communicate with a device in AOAP mode.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_HANDLE_USB_AOAP_DEVICE"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_handle_usb_aoap_device"
android:description="@string/car_permission_desc_car_handle_usb_aoap_device" />
+ <!-- Allows an application to configure UX restrictions in the device.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_UX_RESTRICTIONS_CONFIGURATION"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_car_ux_restrictions_configuration"
android:description="@string/car_permission_desc_car_ux_restrictions_configuration" />
+ <!-- Allows an application to monitor flash storage usage.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.STORAGE_MONITORING"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_storage_monitoring"
android:description="@string/car_permission_desc_storage_monitoring" />
+ <!-- Allows an application to enroll trusted devices.
+ <p>Protection level: signature|privileged
+ -->
<permission
android:name="android.car.permission.CAR_ENROLL_TRUST"
- android:protectionLevel="system|signature"
+ android:protectionLevel="signature|privileged"
android:label="@string/car_permission_label_enroll_trust"
android:description="@string/car_permission_desc_enroll_trust" />