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