1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2015 The Android Open Source Project
3
4     Licensed under the Apache License, Version 2.0 (the "License");
5     you may not use this file except in compliance with the License.
6     You may obtain a copy of the License at
7
8          http://www.apache.org/licenses/LICENSE-2.0
9
10     Unless required by applicable law or agreed to in writing, software
11     distributed under the License is distributed on an "AS IS" BASIS,
12     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13     See the License for the specific language governing permissions and
14     limitations under the License.
15-->
16
17<manifest xmlns:android="http://schemas.android.com/apk/res/android"
18        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
19        package="com.android.car"
20        coreApp="true"
21        android:sharedUserId="android.uid.system">
22
23    <original-package android:name="com.android.car" />
24
25    <!-- Used for runtime permissions related to monitoring vehicle information. -->
26    <permission-group
27        android:name="android.car.permission-group.CAR_MONITORING"
28        android:icon="@drawable/perm_group_car"
29        android:description="@string/car_permission_desc"
30        android:label="@string/car_permission_label" />
31
32    <!-- Allows an application to read the vehicle energy information.
33         <p>Protection level: dangerous
34    -->
35    <permission
36        android:name="android.car.permission.CAR_ENERGY"
37        android:permissionGroup="android.car.permission-group.CAR_MONITORING"
38        android:protectionLevel="dangerous"
39        android:label="@string/car_permission_label_energy"
40        android:description="@string/car_permission_desc_energy" />
41
42    <!-- Allows an application to read the VIN information.
43         <p>Protection level: signature|privileged
44    -->
45    <permission
46        android:name="android.car.permission.CAR_IDENTIFICATION"
47        android:protectionLevel="signature|privileged"
48        android:label="@string/car_permission_label_car_identification"
49        android:description="@string/car_permission_desc_car_identification" />
50
51    <!-- Allows an application to control the vehicle HVAC.
52         <p>Protection level: signature|privileged
53    -->
54    <permission
55        android:name="android.car.permission.CONTROL_CAR_CLIMATE"
56        android:protectionLevel="signature|privileged"
57        android:label="@string/car_permission_label_hvac"
58        android:description="@string/car_permission_desc_hvac" />
59
60    <!-- Allows an application to control the vehicle doors.
61         <p>Protection level: signature|privileged
62    -->
63    <permission
64        android:name="android.car.permission.CONTROL_CAR_DOORS"
65        android:protectionLevel="signature|privileged"
66        android:label="@string/car_permission_label_control_car_doors"
67        android:description="@string/car_permission_desc_control_car_doors" />
68
69    <!-- Allows an application to control the vehicle windows.
70         <p>Protection level: signature|privileged
71    -->
72    <permission
73        android:name="android.car.permission.CONTROL_CAR_WINDOWS"
74        android:protectionLevel="signature|privileged"
75        android:label="@string/car_permission_label_control_car_windows"
76        android:description="@string/car_permission_desc_control_car_windows" />
77
78    <!-- Allows an application to control the vehicle mirrors.
79         <p>Protection level: signature|privileged
80    -->
81    <permission
82        android:name="android.car.permission.CONTROL_CAR_MIRRORS"
83        android:protectionLevel="signature|privileged"
84        android:label="@string/car_permission_label_control_car_mirrors"
85        android:description="@string/car_permission_desc_control_car_mirrors" />
86
87    <!-- Allows an application to control the vehicle seats.
88         <p>Protection level: signature|privileged
89    -->
90    <permission
91        android:name="android.car.permission.CONTROL_CAR_SEATS"
92        android:protectionLevel="signature|privileged"
93        android:label="@string/car_permission_label_control_car_seats"
94        android:description="@string/car_permission_desc_control_car_seats" />
95
96    <!-- Allows an application to read the vehicle mileage information.
97         <p>Protection level: signature|privileged
98    -->
99    <permission
100        android:name="android.car.permission.CAR_MILEAGE"
101        android:protectionLevel="signature|privileged"
102        android:label="@string/car_permission_label_mileage"
103        android:description="@string/car_permission_desc_mileage" />
104
105    <!-- Allows an application to read the vehicle tire pressure information.
106         <p>Protection level: signature|privileged
107    -->
108    <permission
109        android:name="android.car.permission.CAR_TIRES"
110        android:protectionLevel="signature|privileged"
111        android:label="@string/car_permission_label_car_tires"
112        android:description="@string/car_permission_desc_car_tires" />
113
114    <!-- Allows an application to read the vehicle steering angle information.
115         <p>Protection level: signature|privileged
116    -->
117    <permission
118        android:name="android.car.permission.READ_CAR_STEERING"
119        android:protectionLevel="signature|privileged"
120        android:label="@string/car_permission_label_car_steering"
121        android:description="@string/car_permission_desc_car_steering" />
122
123    <!-- Allows an application to read the display units for distance, fuel, tire pressure,
124         EV battery and fuel consumption.
125         <p>Protection level: normal
126    -->
127    <permission
128        android:name="android.car.permission.READ_CAR_DISPLAY_UNITS"
129        android:protectionLevel="normal"
130        android:label="@string/car_permission_label_read_car_display_units"
131        android:description="@string/car_permission_desc_read_car_display_units" />
132
133    <!-- Allows an application to control the display units for distance, fuel, tire pressure,
134         EV battery and fuel consumption.
135         <p>Protection level: normal
136    -->
137    <permission
138        android:name="android.car.permission.CONTROL_CAR_DISPLAY_UNITS"
139        android:protectionLevel="normal"
140        android:label="@string/car_permission_label_control_car_display_units"
141        android:description="@string/car_permission_desc_control_car_display_units" />
142
143    <!-- Allows an application to read the vehicle speed.
144         <p>Protection level: dangerous
145    -->
146    <permission
147        android:name="android.car.permission.CAR_SPEED"
148        android:permissionGroup="android.permission-group.LOCATION"
149        android:protectionLevel="dangerous"
150        android:label="@string/car_permission_label_speed"
151        android:description="@string/car_permission_desc_speed" />
152
153    <!-- Allows an application to read the vehicle fuel and charge port status.
154         <p>Protection level: normal
155    -->
156    <permission
157        android:name="android.car.permission.CAR_ENERGY_PORTS"
158        android:protectionLevel="normal"
159        android:label="@string/car_permission_label_car_energy_ports"
160        android:description="@string/car_permission_desc_car_energy_ports" />
161
162    <!-- Allows an application to read the vehicle engine information. For example, it allows an
163         application to read the engine oil level, oil temperature, coolant temperature and RPM.
164         <p>Protection level: signature|privileged
165    -->
166    <permission
167        android:name="android.car.permission.CAR_ENGINE_DETAILED"
168        android:protectionLevel="signature|privileged"
169        android:label="@string/car_permission_label_car_engine_detailed"
170        android:description="@string/car_permission_desc_car_engine_detailed" />
171
172    <!-- Allows an application to read the vehicle dynamic state information. For example, it
173         allows an application to read the ABS and traction control status.
174         <p>Protection level: signature|privileged
175    -->
176    <permission
177        android:name="android.car.permission.CAR_DYNAMICS_STATE"
178        android:protectionLevel="signature|privileged"
179        android:label="@string/car_permission_label_vehicle_dynamics_state"
180        android:description="@string/car_permission_desc_vehicle_dynamics_state" />
181
182    <!-- Allows an application to access the vehicle vendor channel to exchange vendor-specific information.
183         <p>Protection level: signature|privileged
184    -->
185    <permission
186        android:name="android.car.permission.CAR_VENDOR_EXTENSION"
187        android:protectionLevel="signature|privileged"
188        android:label="@string/car_permission_label_vendor_extension"
189        android:description="@string/car_permission_desc_vendor_extension" />
190
191    <!-- Allows an application to project an interface from a phone to the vehicle display.
192         <p>Protection level: signature|privileged
193    -->
194    <permission
195        android:name="android.car.permission.CAR_PROJECTION"
196        android:protectionLevel="signature|privileged"
197        android:label="@string/car_permission_label_projection"
198        android:description="@string/car_permission_desc_projection" />
199
200    <!-- Allows an application to get the status of other applications projecting to the vehicle display.
201         technologies status changes.
202         <p>Protection level: signature|privileged
203    -->
204    <permission
205        android:name="android.car.permission.ACCESS_CAR_PROJECTION_STATUS"
206        android:protectionLevel="signature|privileged"
207        android:label="@string/car_permission_label_access_projection_status"
208        android:description="@string/car_permission_desc_access_projection_status" />
209
210    <!-- Must be required by projection service to ensure only system can bind to it.
211         <p>Protection level: signature
212    -->
213    <permission
214        android:name="android.car.permission.BIND_PROJECTION_SERVICE"
215        android:protectionLevel="signature"
216        android:label="@string/car_permission_label_bind_projection_service"
217        android:description="@string/car_permission_desc_bind_projection_service" />
218
219    <!-- Allows an application to emulate the vehicle HAL for testing purposes.
220         <p>Protection level: signature|privileged
221    -->
222    <permission
223        android:name="android.car.permission.CAR_MOCK_VEHICLE_HAL"
224        android:protectionLevel="signature|privileged"
225        android:label="@string/car_permission_label_mock_vehicle_hal"
226        android:description="@string/car_permission_desc_mock_vehicle_hal" />
227
228    <!-- Allows an application to read the vehicle car basic information. For example, it allows
229         an application to read the vehicle Make, Model, Model Year, fuel capacity, fuel type,
230         EV battery capacity, EV connection type, fuel door location and driver seat location.
231         <p>Protection level: normal
232    -->
233    <permission
234        android:name="android.car.permission.CAR_INFO"
235        android:protectionLevel="normal"
236        android:label="@string/car_permission_label_car_info"
237        android:description="@string/car_permission_desc_car_info" />
238
239    <!-- Allows an application to read the vehicle exterior environment information. For example,
240         it allows an application to read the vehicle exterior temperature and night mode status.
241         <p>Protection level: normal
242    -->
243    <permission
244        android:name="android.car.permission.CAR_EXTERIOR_ENVIRONMENT"
245        android:protectionLevel="normal"
246        android:label="@string/car_permission_label_car_exterior_environment"
247        android:description="@string/car_permission_desc_car_exterior_environment" />
248
249    <!-- Allows an application to read the vehicle exterior lights state.
250         <p>Protection level: signature|privileged
251    -->
252    <permission
253        android:name="android.car.permission.CAR_EXTERIOR_LIGHTS"
254        android:protectionLevel="signature|privileged"
255        android:label="@string/car_permission_label_car_exterior_lights"
256        android:description="@string/car_permission_desc_car_exterior_lights" />
257
258    <!-- Allows an application to control the vehicle exterior lights.
259         <p>Protection level: signature|privileged
260    -->
261    <permission
262        android:name="android.car.permission.CONTROL_CAR_EXTERIOR_LIGHTS"
263        android:protectionLevel="signature|privileged"
264        android:label="@string/car_permission_label_control_car_exterior_lights"
265        android:description="@string/car_permission_desc_control_car_exterior_lights" />
266
267    <!-- Allows an application to read the vehicle interior lights state.
268         <p>Protection level: signature|privileged
269    -->
270    <permission
271        android:name="android.car.permission.READ_CAR_INTERIOR_LIGHTS"
272        android:protectionLevel="signature|privileged"
273        android:label="@string/car_permission_label_car_interior_lights"
274        android:description="@string/car_permission_desc_car_interior_lights" />
275
276    <!-- Allows an application to control the vehicle interior lights state.
277         <p>Protection level: signature|privileged
278    -->
279    <permission
280        android:name="android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS"
281        android:protectionLevel="signature|privileged"
282        android:label="@string/car_permission_label_control_car_interior_lights"
283        android:description="@string/car_permission_desc_control_car_interior_lights" />
284
285    <!-- Allows an application to control the vehicle power state.
286         <p>Protection level: signature|privileged
287    -->
288    <permission
289        android:name="android.car.permission.CAR_POWER"
290        android:protectionLevel="signature|privileged"
291        android:label="@string/car_permission_label_car_power"
292        android:description="@string/car_permission_desc_car_power" />
293
294    <!-- Allows an application to read the vehicle powertrain information. For example, it allows
295         an application to read the vehicle current gear, ignition state or parking break status.
296         <p>Protection level: normal
297    -->
298    <permission
299        android:name="android.car.permission.CAR_POWERTRAIN"
300        android:protectionLevel="normal"
301        android:label="@string/car_permission_label_car_powertrain"
302        android:description="@string/car_permission_desc_car_powertrain" />
303
304    <!-- Allows an application to access {@link android.car.navigation.CarNavigationStatusManager}
305         to report navigation data. This information may be displayed by the vehicle in the
306         instrument cluster, head-up display or other locations.
307         <p>Protection level: signature|privileged
308    -->
309    <permission
310        android:name="android.car.permission.CAR_NAVIGATION_MANAGER"
311        android:protectionLevel="signature|privileged"
312        android:label="@string/car_permission_car_navigation_manager"
313        android:description="@string/car_permission_desc_car_navigation_manager" />
314
315    <!-- Allows an application to read vehicle diagnostic information, including vendor-specific
316         information.
317         <p>Protection level: signature|privileged
318    -->
319    <permission
320        android:name="android.car.permission.CAR_DIAGNOSTICS"
321        android:protectionLevel="signature|privileged"
322        android:label="@string/car_permission_label_diag_read"
323        android:description="@string/car_permission_desc_diag_read" />
324
325    <!-- Allows an application to clear diagnostic information from the vehicle.
326         <p>Protection level: signature|privileged
327    -->
328    <permission
329        android:name="android.car.permission.CLEAR_CAR_DIAGNOSTICS"
330        android:protectionLevel="signature|privileged"
331        android:label="@string/car_permission_label_diag_clear"
332        android:description="@string/car_permission_desc_diag_clear" />
333
334    <!-- Must be required by VMS client service to ensure only system can bind to it.
335         <p>Protection level: signature
336    -->
337    <permission
338        android:name="android.car.permission.BIND_VMS_CLIENT"
339        android:protectionLevel="signature"
340        android:label="@string/car_permission_label_bind_vms_client"
341        android:description="@string/car_permission_desc_bind_vms_client" />
342
343    <!-- Allows an application to publich VMS messages.
344         <p>Protection level: signature|privileged
345    -->
346    <permission
347        android:name="android.car.permission.VMS_PUBLISHER"
348        android:protectionLevel="signature|privileged"
349        android:label="@string/car_permission_label_vms_publisher"
350        android:description="@string/car_permission_desc_vms_publisher" />
351
352    <!-- Allows an application to subscribe to VMS messages.
353         <p>Protection level: signature|privileged
354    -->
355    <permission
356        android:name="android.car.permission.VMS_SUBSCRIBER"
357        android:protectionLevel="signature|privileged"
358        android:label="@string/car_permission_label_vms_subscriber"
359        android:description="@string/car_permission_desc_vms_subscriber" />
360
361    <!-- Allows an application to read the vehicle driving state.
362         <p>Protection level: signature|privileged
363    -->
364    <permission
365        android:name="android.car.permission.CAR_DRIVING_STATE"
366        android:protectionLevel="signature|privileged"
367        android:label="@string/car_permission_label_driving_state"
368        android:description="@string/car_permission_desc_driving_state" />
369
370    <!--  may replace this with system permission if proper one is defined. -->
371    <eat-comment />
372    <!-- Allows an application to block other applications for driver distraction purposes.
373         Note: This permission may be replaced in future versions.
374         <p>Protection level: signature|privileged
375    -->
376    <permission
377        android:name="android.car.permission.CONTROL_APP_BLOCKING"
378        android:protectionLevel="signature|privileged"
379        android:label="@string/car_permission_label_control_app_blocking"
380        android:description="@string/car_permission_desc_control_app_blocking" />
381
382    <!-- Allows an application to control the vehicle audio volume.
383         <p>Protection level: signature|privileged
384    -->
385    <permission
386        android:name="android.car.permission.CAR_CONTROL_AUDIO_VOLUME"
387        android:protectionLevel="signature|privileged"
388        android:label="@string/car_permission_label_audio_volume"
389        android:description="@string/car_permission_desc_audio_volume" />
390
391    <!-- Allows an application to control the vehicle audio settings.
392         <p>Protection level: signature|privileged
393    -->
394    <permission
395        android:name="android.car.permission.CAR_CONTROL_AUDIO_SETTINGS"
396        android:protectionLevel="signature|privileged"
397        android:label="@string/car_permission_label_audio_settings"
398        android:description="@string/car_permission_desc_audio_settings" />
399
400    <!-- Must be required by instrument cluster service to ensure only system can bind to it.
401         <p>Protection level: signature
402    -->
403    <permission
404        android:name="android.car.permission.RECEIVE_CAR_AUDIO_DUCKING_EVENTS"
405        android:protectionLevel="system|signature"
406        android:label="@string/car_permission_label_receive_ducking"
407        android:description="@string/car_permission_desc_receive_ducking" />
408
409    <permission
410        android:name="android.car.permission.BIND_INSTRUMENT_CLUSTER_RENDERER_SERVICE"
411        android:protectionLevel="signature"
412        android:label="@string/car_permission_label_bind_instrument_cluster_rendering"
413        android:description="@string/car_permission_desc_bind_instrument_cluster_rendering"/>
414
415    <!-- Allows an application to handle the vehicle input events.
416         <p>Protection level: signature
417    -->
418    <permission
419        android:name="android.car.permission.BIND_CAR_INPUT_SERVICE"
420        android:protectionLevel="signature"
421        android:label="@string/car_permission_label_bind_input_service"
422        android:description="@string/car_permission_desc_bind_input_service"/>
423
424    <!-- Allows an application to declare activities to be displayed in the instrument cluster.
425         <p>Protection level: signature|privileged
426    -->
427    <permission
428        android:name="android.car.permission.CAR_DISPLAY_IN_CLUSTER"
429        android:protectionLevel="signature|privileged"
430        android:label="@string/car_permission_car_display_in_cluster"
431        android:description="@string/car_permission_desc_car_display_in_cluster" />
432
433    <!-- Allows an application to lunch applications in the instrument cluster.
434         <p>Protection level: signature|privileged
435    -->
436    <permission
437        android:name="android.car.permission.CAR_INSTRUMENT_CLUSTER_CONTROL"
438        android:protectionLevel="signature|privileged"
439        android:label="@string/car_permission_car_cluster_control"
440        android:description="@string/car_permission_desc_car_cluster_control" />
441
442    <!-- Allows an application to communicate with a device in AOAP mode.
443         <p>Protection level: signature|privileged
444    -->
445    <permission
446        android:name="android.car.permission.CAR_HANDLE_USB_AOAP_DEVICE"
447        android:protectionLevel="signature|privileged"
448        android:label="@string/car_permission_label_car_handle_usb_aoap_device"
449        android:description="@string/car_permission_desc_car_handle_usb_aoap_device" />
450
451    <!-- Allows an application to configure UX restrictions in the device.
452         <p>Protection level: signature|privileged
453    -->
454    <permission
455        android:name="android.car.permission.CAR_UX_RESTRICTIONS_CONFIGURATION"
456        android:protectionLevel="signature|privileged"
457        android:label="@string/car_permission_label_car_ux_restrictions_configuration"
458        android:description="@string/car_permission_desc_car_ux_restrictions_configuration" />
459
460    <!-- Allows an application to monitor flash storage usage.
461         <p>Protection level: signature|privileged
462    -->
463    <permission
464        android:name="android.car.permission.STORAGE_MONITORING"
465        android:protectionLevel="signature|privileged"
466        android:label="@string/car_permission_label_storage_monitoring"
467        android:description="@string/car_permission_desc_storage_monitoring" />
468
469    <!-- Allows an application to enroll trusted devices.
470         <p>Protection level: signature|privileged
471    -->
472    <permission
473        android:name="android.car.permission.CAR_ENROLL_TRUST"
474        android:protectionLevel="signature|privileged"
475        android:label="@string/car_permission_label_enroll_trust"
476        android:description="@string/car_permission_desc_enroll_trust" />
477
478    <!-- Allows a test application to control car service's testing mode.
479         This is only for platform level testing.
480         <p>Protection level: signature|privileged
481    -->
482    <permission
483        android:name="android.car.permission.CAR_TEST_SERVICE"
484        android:protectionLevel="signature|privileged"
485        android:label="@string/car_permission_label_car_test_service"
486        android:description="@string/car_permission_desc_car_test_service" />
487
488    <uses-permission android:name="android.permission.CALL_PHONE" />
489    <uses-permission android:name="android.permission.DEVICE_POWER" />
490    <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
491    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
492    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
493    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
494    <uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE" />
495    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
496    <uses-permission android:name="android.permission.READ_CALL_LOG" />
497    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
498    <uses-permission android:name="android.permission.REAL_GET_TASKS" />
499    <uses-permission android:name="android.permission.REBOOT" />
500    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
501    <uses-permission android:name="android.permission.REMOVE_TASKS" />
502    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
503    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
504    <uses-permission android:name="android.permission.BLUETOOTH" />
505    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
506    <uses-permission android:name="android.permission.MANAGE_USERS" />
507    <uses-permission android:name="android.permission.LOCATION_HARDWARE" />
508    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
509    <uses-permission android:name="android.permission.PROVIDE_TRUST_AGENT" />
510    <uses-permission android:name="android.permission.READ_LOGS" />
511
512    <application android:label="@string/app_title"
513                 android:directBootAware="true"
514                 android:allowBackup="false"
515                 android:persistent="true">
516
517        <uses-library android:name="android.test.runner" />
518        <service android:name=".CarService"
519                android:singleUser="true">
520            <intent-filter>
521                <action android:name="android.car.ICar" />
522            </intent-filter>
523        </service>
524        <service android:name=".PerUserCarService" android:exported="false" />
525
526        <service
527            android:name="com.android.car.trust.CarBleTrustAgent"
528            android:permission="android.permission.BIND_TRUST_AGENT"
529            android:singleUser="true">
530            <intent-filter>
531                <action android:name="android.service.trust.TrustAgentService" />
532                <category android:name="android.intent.category.DEFAULT" />
533            </intent-filter>
534            <!-- Warning: the meta data must be included if the service is direct boot aware.
535                If not included, the device will crash before boot completes. Rendering the
536                device unusable. -->
537            <meta-data android:name="android.service.trust.trustagent"
538                       android:resource="@xml/car_trust_agent"/>
539        </service>
540        <activity android:name="com.android.car.pm.ActivityBlockingActivity"
541                  android:documentLaunchMode="always"
542                  android:excludeFromRecents="true"
543                  android:exported="false"
544                  android:theme="@android:style/Theme.Translucent.NoTitleBar">
545            <intent-filter>
546                <action android:name="android.intent.action.MAIN" />
547            </intent-filter>
548        </activity>
549        <activity android:name="com.android.car.am.ContinuousBlankActivity"
550                  android:excludeFromRecents="true"
551                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
552                  android:exported="false"
553                  android:launchMode="singleTask">
554        </activity>
555    </application>
556</manifest>
557