• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2
3<manifest xmlns:android="http://schemas.android.com/apk/res/android"
4     package="com.android.bluetooth"
5     android:sharedUserId="android.uid.bluetooth">
6
7    <original-package android:name="com.android.bluetooth"/>
8
9    <!-- Allows access to the Bluetooth Share Manager -->
10    <permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"
11         android:label="@string/permlab_bluetoothShareManager"
12         android:description="@string/permdesc_bluetoothShareManager"
13         android:protectionLevel="signature"/>
14
15    <!--  Allows temporarily acceptlisting Bluetooth addresses for sharing -->
16    <permission android:name="com.android.permission.ALLOWLIST_BLUETOOTH_DEVICE"
17         android:label="@string/permlab_bluetoothAcceptlist"
18         android:description="@string/permdesc_bluetoothAcceptlist"
19         android:protectionLevel="signature"/>
20
21    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
22    <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
23    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
24    <uses-permission android:name="android.permission.INTERNET"/>
25    <uses-permission android:name="android.permission.BLUETOOTH"/>
26    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
27    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"/>
28    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
29    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
30    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>
31    <uses-permission android:name="android.permission.BLUETOOTH_MAP"/>
32    <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
33    <uses-permission android:name="android.permission.DUMP"/>
34    <uses-permission android:name="android.permission.WAKE_LOCK"/>
35    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
36    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
37    <uses-permission android:name="android.permission.READ_CONTACTS"/>
38    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
39    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
40    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
41    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
42    <uses-permission android:name="android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH"/>
43    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
44    <uses-permission android:name="android.permission.NFC_HANDOVER_STATUS"/>
45    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
46    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
47    <uses-permission android:name="android.permission.NET_ADMIN"/>
48    <uses-permission android:name="android.permission.CALL_PRIVILEGED"/>
49    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
50    <uses-permission android:name="android.permission.NET_TUNNELING"/>
51    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
52    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
53    <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL"/>
54    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
55    <uses-permission android:name="android.permission.NETWORK_FACTORY"/>
56    <uses-permission android:name="android.permission.TETHER_PRIVILEGED"/>
57    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
58    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
59    <uses-permission android:name="android.permission.BLUETOOTH_STACK"/>
60    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
61    <uses-permission android:name="android.permission.MANAGE_USERS"/>
62    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
63    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
64    <uses-permission android:name="android.permission.SEND_SMS"/>
65    <uses-permission android:name="android.permission.READ_SMS"/>
66    <uses-permission android:name="android.permission.WRITE_SMS"/>
67    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
68    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
69    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES"/>
70    <uses-permission android:name="android.permission.VIBRATE"/>
71    <uses-permission android:name="android.permission.DEVICE_POWER"/>
72    <uses-permission android:name="android.permission.REAL_GET_TASKS"/>
73    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING"/>
74    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
75    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
76    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
77    <uses-permission android:name="android.permission.MANAGE_COMPANION_DEVICES"/>
78    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
79    <uses-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS"/>
80
81    <uses-sdk android:minSdkVersion="14"/>
82
83    <!-- For PBAP Owner Vcard Info -->
84    <uses-permission android:name="android.permission.READ_PROFILE"/>
85    <application android:name=".btservice.AdapterApp"
86         android:icon="@mipmap/bt_share"
87         android:persistent="false"
88         android:label="@string/app_name"
89         android:supportsRtl="true"
90         android:usesCleartextTraffic="false"
91         android:directBootAware="true"
92         android:defaultToDeviceProtectedStorage="true"
93         android:memtagMode="async">
94        <uses-library android:name="javax.obex"/>
95        <provider android:name=".opp.BluetoothOppProvider"
96             android:authorities="com.android.bluetooth.opp"
97             android:exported="true"
98             android:process="@string/process">
99            <path-permission android:pathPrefix="/btopp"
100                 android:permission="android.permission.ACCESS_BLUETOOTH_SHARE"/>
101        </provider>
102        <provider android:name=".opp.BluetoothOppFileProvider"
103             android:authorities="com.android.bluetooth.opp.fileprovider"
104             android:grantUriPermissions="true"
105             android:exported="false">
106            <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
107                 android:resource="@xml/file_paths"/>
108        </provider>
109        <service android:process="@string/process"
110             android:name=".btservice.AdapterService"
111             android:exported="true">
112            <intent-filter>
113                <action android:name="android.bluetooth.IBluetooth"/>
114            </intent-filter>
115        </service>
116        <service android:process="@string/process"
117             android:name=".opp.BluetoothOppService"
118             android:permission="android.permission.ACCESS_BLUETOOTH_SHARE"
119             android:enabled="@bool/profile_supported_opp"/>
120        <receiver android:process="@string/process"
121             android:exported="true"
122             android:name=".opp.BluetoothOppReceiver"
123             android:enabled="@bool/profile_supported_opp">
124            <intent-filter>
125                <action android:name="android.btopp.intent.action.OPEN_RECEIVED_FILES"/>
126            </intent-filter>
127        </receiver>
128         <receiver android:process="@string/process"
129              android:name=".opp.BluetoothOppHandoverReceiver"
130              android:permission="com.android.permission.ALLOWLIST_BLUETOOTH_DEVICE"
131              android:exported="true">
132            <intent-filter>
133                <action android:name="android.btopp.intent.action.ACCEPTLIST_DEVICE"/>
134                <action android:name="android.btopp.intent.action.STOP_HANDOVER_TRANSFER"/>
135            </intent-filter>
136            <intent-filter>
137                <action android:name="android.nfc.handover.intent.action.HANDOVER_SEND"/>
138                <category android:name="android.intent.category.DEFAULT"/>
139                <data android:mimeType="*/*"/>
140            </intent-filter>
141            <intent-filter>
142                <action android:name="android.nfc.handover.intent.action.HANDOVER_SEND_MULTIPLE"/>
143                <category android:name="android.intent.category.DEFAULT"/>
144                <data android:mimeType="*/*"/>
145            </intent-filter>
146        </receiver>
147        <activity android:name=".opp.BluetoothOppLauncherActivity"
148             android:process="@string/process"
149             android:theme="@android:style/Theme.Material.Light.Dialog"
150             android:label="@string/bt_share_picker_label"
151             android:enabled="@bool/profile_supported_opp"
152             android:exported="true">
153            <intent-filter>
154                <action android:name="android.intent.action.SEND"/>
155                <category android:name="android.intent.category.DEFAULT"/>
156                <data android:mimeType="image/*"/>
157                <data android:mimeType="video/*"/>
158                <data android:mimeType="audio/*"/>
159                <data android:mimeType="text/x-vcard"/>
160                <data android:mimeType="text/x-vcalendar"/>
161                <data android:mimeType="text/calendar"/>
162                <data android:mimeType="text/plain"/>
163                <data android:mimeType="text/html"/>
164                <data android:mimeType="text/xml"/>
165                <data android:mimeType="application/zip"/>
166                <data android:mimeType="application/vnd.ms-excel"/>
167                <data android:mimeType="application/msword"/>
168                <data android:mimeType="application/vnd.ms-powerpoint"/>
169                <data android:mimeType="application/pdf"/>
170                <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
171                <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document"/>
172                <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation"/>
173                <data android:mimeType="application/x-hwp"/>
174            </intent-filter>
175            <intent-filter>
176                <action android:name="android.intent.action.SEND_MULTIPLE"/>
177                <category android:name="android.intent.category.DEFAULT"/>
178                <data android:mimeType="image/*"/>
179                <data android:mimeType="video/*"/>
180                <data android:mimeType="x-mixmedia/*"/>
181                <data android:mimeType="text/x-vcard"/>
182            </intent-filter>
183            <intent-filter>
184                <action android:name="android.btopp.intent.action.OPEN"/>
185                <category android:name="android.intent.category.DEFAULT"/>
186                <data android:mimeType="vnd.android.cursor.item/vnd.android.btopp"/>
187            </intent-filter>
188        </activity>
189        <activity android:name=".opp.BluetoothOppBtEnableActivity"
190             android:process="@string/process"
191             android:excludeFromRecents="true"
192             android:theme="@style/dialog"
193             android:enabled="@bool/profile_supported_opp">
194        </activity>
195        <activity android:name=".opp.BluetoothOppBtErrorActivity"
196             android:process="@string/process"
197             android:excludeFromRecents="true"
198             android:theme="@style/dialog">
199        </activity>
200        <activity android:name=".opp.BluetoothOppBtEnablingActivity"
201             android:process="@string/process"
202             android:excludeFromRecents="true"
203             android:theme="@style/dialog"
204             android:enabled="@bool/profile_supported_opp">
205        </activity>
206        <activity android:name=".opp.BluetoothOppIncomingFileConfirmActivity"
207             android:process="@string/process"
208             android:excludeFromRecents="true"
209             android:theme="@style/dialog"
210             android:enabled="@bool/profile_supported_opp">
211        </activity>
212        <activity android:name=".opp.BluetoothOppTransferActivity"
213             android:process="@string/process"
214             android:excludeFromRecents="true"
215             android:theme="@style/dialog"
216             android:enabled="@bool/profile_supported_opp">
217        </activity>
218        <activity android:name=".opp.BluetoothOppTransferHistory"
219             android:process="@string/process"
220             android:label=""
221             android:excludeFromRecents="true"
222             android:configChanges="orientation|keyboardHidden"
223             android:enabled="@bool/profile_supported_opp"
224             android:theme="@android:style/Theme.DeviceDefault.Settings"
225             android:exported="true">
226            <intent-filter>
227                <action android:name="com.android.bluetooth.action.TransferHistory"/>
228                <category android:name="android.intent.category.DEFAULT"/>
229            </intent-filter>
230        </activity>
231        <activity android:name=".pbap.BluetoothPbapActivity"
232             android:process="@string/process"
233             android:excludeFromRecents="true"
234             android:theme="@style/dialog"
235             android:enabled="@bool/profile_supported_pbap">
236        </activity>
237        <service android:process="@string/process"
238             android:permission="android.permission.BLUETOOTH_PRIVILEGED"
239             android:name=".pbap.BluetoothPbapService"
240             android:enabled="@bool/profile_supported_pbap"
241             android:exported="true">
242            <intent-filter>
243                <action android:name="android.bluetooth.IBluetoothPbap"/>
244            </intent-filter>
245        </service>
246        <service android:process="@string/process"
247             android:name=".map.BluetoothMapService"
248             android:enabled="@bool/profile_supported_map"
249             android:exported="true">
250            <intent-filter>
251                <action android:name="android.bluetooth.IBluetoothMap"/>
252                <action android:name="android.btmap.intent.action.SHOW_MAPS_SETTINGS"/>
253                <action android:name="com.android.bluetooth.map.USER_CONFIRM_TIMEOUT"/>
254            </intent-filter>
255        </service>
256         <activity android:name=".map.BluetoothMapSettings"
257              android:process="@string/process"
258              android:label="@string/bluetooth_map_settings_title"
259              android:excludeFromRecents="true"
260              android:configChanges="orientation|keyboardHidden"
261              android:enabled="@bool/profile_supported_map">
262        </activity>
263        <provider android:name=".map.MmsFileProvider"
264             android:authorities="com.android.bluetooth.map.MmsFileProvider"
265             android:enabled="true"
266             android:grantUriPermissions="true"
267             android:exported="false">
268        </provider>
269        <service android:process="@string/process"
270             android:name=".mapclient.MapClientService"
271             android:enabled="@bool/profile_supported_mapmce"
272             android:exported="true">
273            <intent-filter>
274                <action android:name="android.bluetooth.IBluetoothMapClient"/>
275            </intent-filter>
276        </service>
277        <service android:process="@string/process"
278             android:name=".sap.SapService"
279             android:enabled="@bool/profile_supported_sap"
280             android:exported="true">
281            <intent-filter>
282                <action android:name="android.bluetooth.IBluetoothSap"/>
283            </intent-filter>
284        </service>
285        <service android:process="@string/process"
286             android:name=".gatt.GattService"
287             android:enabled="@bool/profile_supported_gatt"
288             android:exported="true">
289            <intent-filter>
290                <action android:name="android.bluetooth.IBluetoothGatt"/>
291            </intent-filter>
292        </service>
293        <service android:process="@string/process"
294             android:name=".hfp.HeadsetService"
295             android:enabled="@bool/profile_supported_hs_hfp"
296             android:exported="true">
297            <intent-filter>
298                <action android:name="android.bluetooth.IBluetoothHeadset"/>
299            </intent-filter>
300        </service>
301        <service android:process="@string/process"
302             android:name=".a2dp.A2dpService"
303             android:enabled="@bool/profile_supported_a2dp"
304             android:exported="true">
305            <intent-filter>
306                <action android:name="android.bluetooth.IBluetoothA2dp"/>
307            </intent-filter>
308        </service>
309        <service android:process="@string/process"
310             android:name=".a2dpsink.A2dpSinkService"
311             android:enabled="@bool/profile_supported_a2dp_sink"
312             android:exported="true">
313            <intent-filter>
314                <action android:name="android.bluetooth.IBluetoothA2dpSink"/>
315            </intent-filter>
316        </service>
317        <service android:process="@string/process"
318             android:name=".avrcpcontroller.BluetoothMediaBrowserService"
319             android:exported="true"
320             android:enabled="@bool/profile_supported_a2dp_sink"
321             android:label="@string/a2dp_sink_mbs_label">
322            <intent-filter>
323                <action android:name="android.media.browse.MediaBrowserService"/>
324            </intent-filter>
325        </service>
326
327        <activity android:name=".BluetoothPrefs"
328             android:exported="@bool/profile_supported_a2dp_sink"
329             android:enabled="@bool/profile_supported_a2dp_sink">
330            <intent-filter>
331                <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
332            </intent-filter>
333        </activity>
334
335        <service android:process="@string/process"
336             android:name=".avrcp.AvrcpTargetService"
337             android:enabled="@bool/profile_supported_avrcp_target"
338             android:exported="true">
339            <intent-filter>
340                <action android:name="android.bluetooth.IBluetoothAvrcp"/>
341            </intent-filter>
342        </service>
343        <service android:process="@string/process"
344             android:name=".avrcpcontroller.AvrcpControllerService"
345             android:enabled="@bool/profile_supported_avrcp_controller"
346             android:exported="true">
347            <intent-filter>
348                <action android:name="android.bluetooth.IBluetoothAvrcpController"/>
349            </intent-filter>
350        </service>
351        <provider android:process="@string/process"
352             android:name=".avrcpcontroller.AvrcpCoverArtProvider"
353             android:authorities="com.android.bluetooth.avrcpcontroller.AvrcpCoverArtProvider"
354             android:enabled="@bool/avrcp_controller_enable_cover_art"
355             android:grantUriPermissions="true"
356             android:exported="true">
357        </provider>
358        <service android:process="@string/process"
359             android:name=".hid.HidHostService"
360             android:enabled="@bool/profile_supported_hid_host"
361             android:exported="true">
362            <intent-filter>
363                <action android:name="android.bluetooth.IBluetoothHidHost"/>
364            </intent-filter>
365        </service>
366        <service android:process="@string/process"
367             android:name=".hid.HidDeviceService"
368             android:enabled="@bool/profile_supported_hid_device"
369             android:exported="true">
370            <intent-filter>
371                <action android:name="android.bluetooth.IBluetoothHidDevice"/>
372            </intent-filter>
373        </service>
374        <service android:process="@string/process"
375             android:name=".pan.PanService"
376             android:enabled="@bool/profile_supported_pan"
377             android:exported="true">
378            <intent-filter>
379                <action android:name="android.bluetooth.IBluetoothPan"/>
380            </intent-filter>
381        </service>
382        <service android:process="@string/process"
383             android:name=".hfpclient.HeadsetClientService"
384             android:enabled="@bool/profile_supported_hfpclient"
385             android:exported="true">
386            <intent-filter>
387                <action android:name="android.bluetooth.IBluetoothHeadsetClient"/>
388            </intent-filter>
389        </service>
390        <service android:process="@string/process"
391             android:name=".hfpclient.connserv.HfpClientConnectionService"
392             android:permission="android.permission.BIND_CONNECTION_SERVICE"
393             android:enabled="@bool/hfp_client_connection_service_enabled"
394             android:exported="true">
395            <intent-filter>
396                <!-- Mechanism for Telecom stack to connect -->
397                <action android:name="android.telecom.ConnectionService"/>
398            </intent-filter>
399        </service>
400        <service android:process="@string/process"
401             android:name=".pbapclient.PbapClientService"
402             android:enabled="@bool/profile_supported_pbapclient"
403             android:exported="true">
404            <intent-filter>
405                <action android:name="android.bluetooth.IBluetoothPbapClient"/>
406            </intent-filter>
407        </service>
408        <service android:process="@string/process"
409             android:name=".hearingaid.HearingAidService"
410             android:exported="true">
411            <intent-filter>
412                <action android:name="android.bluetooth.IBluetoothHearingAid"/>
413            </intent-filter>
414        </service>
415        <service
416            android:process="@string/process"
417            android:name = ".le_audio.LeAudioService"
418            android:exported = "true">
419            <intent-filter>
420                <action android:name="android.bluetooth.IBluetoothLeAudio" />
421            </intent-filter>
422        </service>
423        <!-- Authenticator for PBAP account. -->
424        <service android:process="@string/process"
425             android:name=".pbapclient.AuthenticationService"
426             android:exported="true"
427             android:enabled="@bool/profile_supported_pbapclient">
428            <intent-filter>
429                <action android:name="android.accounts.AccountAuthenticator"/>
430            </intent-filter>
431            <meta-data android:name="android.accounts.AccountAuthenticator"
432                 android:resource="@xml/authenticator"/>
433        </service>
434        <service
435            android:name=".telephony.BluetoothInCallService"
436            android:permission="android.permission.BIND_INCALL_SERVICE"
437            android:process="@string/process"
438            android:enabled="@bool/profile_supported_hfp_incallservice"
439            android:exported="true">
440            <meta-data android:name="android.telecom.INCLUDE_SELF_MANAGED_CALLS"
441                       android:value="true" />
442            <intent-filter>
443              <action android:name="android.telecom.InCallService"/>
444            </intent-filter>
445         </service>
446    </application>
447</manifest>
448