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