Xml文件  |  540行  |  25.35 KB

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
        package="com.android.car"
        coreApp="true"
        android:sharedUserId="android.uid.system">

    <original-package android:name="com.android.car" />

    <!-- 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="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="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="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="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="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="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="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="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="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="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="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="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="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="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" />

    <!-- 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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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.RECEIVE_CAR_AUDIO_DUCKING_EVENTS"
        android:protectionLevel="system|signature"
        android:label="@string/car_permission_label_receive_ducking"
        android:description="@string/car_permission_desc_receive_ducking" />

    <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="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="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="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="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="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="signature|privileged"
        android:label="@string/car_permission_label_enroll_trust"
        android:description="@string/car_permission_desc_enroll_trust" />

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.DEVICE_POWER" />
    <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
    <uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.REAL_GET_TASKS" />
    <uses-permission android:name="android.permission.REBOOT" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.REMOVE_TASKS" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.LOCATION_HARDWARE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.PROVIDE_TRUST_AGENT" />
    <uses-permission android:name="android.permission.READ_LOGS" />

    <application android:label="@string/app_title"
                 android:directBootAware="true"
                 android:allowBackup="false"
                 android:persistent="true">

        <uses-library android:name="android.test.runner" />
        <service android:name=".CarService"
                android:singleUser="true">
            <intent-filter>
                <action android:name="android.car.ICar" />
            </intent-filter>
        </service>
        <service android:name=".PerUserCarService" android:exported="false" />

        <service
            android:name="com.android.car.trust.CarBleTrustAgent"
            android:permission="android.permission.BIND_TRUST_AGENT"
            android:singleUser="true">
            <intent-filter>
                <action android:name="android.service.trust.TrustAgentService" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <!-- Warning: the meta data must be included if the service is direct boot aware.
                If not included, the device will crash before boot completes. Rendering the
                device unusable. -->
            <meta-data android:name="android.service.trust.trustagent"
                       android:resource="@xml/car_trust_agent"/>
        </service>
        <activity android:name="com.android.car.pm.ActivityBlockingActivity"
                  android:documentLaunchMode="always"
                  android:excludeFromRecents="true"
                  android:exported="false"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
    </application>
</manifest>