<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.bluetooth"
android:sharedUserId="android.uid.bluetooth">
<original-package android:name="com.android.bluetooth" />
<!-- Allows access to the Bluetooth Share Manager -->
<permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"
android:label="@string/permlab_bluetoothShareManager"
android:description="@string/permdesc_bluetoothShareManager"
android:protectionLevel="signature" />
<!-- Allows temporarily whitelisting Bluetooth addresses for sharing -->
<permission android:name="com.android.permission.WHITELIST_BLUETOOTH_DEVICE"
android:label="@string/permlab_bluetoothWhitelist"
android:description="@string/permdesc_bluetoothWhitelist"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.BLUETOOTH_MAP" />
<uses-permission android:name="android.permission.DUMP" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.NFC_HANDOVER_STATUS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.NET_ADMIN" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.NET_TUNNELING" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.TETHER_PRIVILEGED" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.BLUETOOTH_STACK" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
<uses-permission android:name="android.permission.MANAGE_USERS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.gallery3d.permission.GALLERY_PROVIDER"/>
<uses-permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER"/>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
<uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.REAL_GET_TASKS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
<uses-sdk android:minSdkVersion="14"/>
<!-- For PBAP Owner Vcard Info -->
<uses-permission android:name="android.permission.READ_PROFILE"/>
<application
android:name=".btservice.AdapterApp"
android:icon="@mipmap/bt_share"
android:persistent="false"
android:label="@string/app_name"
android:supportsRtl="true"
android:usesCleartextTraffic="false"
android:directBootAware="true"
android:defaultToDeviceProtectedStorage="true"
android:requestLegacyExternalStorage="true">
<uses-library android:name="javax.obex" />
<provider android:name=".opp.BluetoothOppProvider"
android:authorities="com.android.bluetooth.opp"
android:exported="true"
android:process="@string/process">
<path-permission
android:pathPrefix="/btopp"
android:permission="android.permission.ACCESS_BLUETOOTH_SHARE" />
</provider>
<provider android:name=".opp.BluetoothOppFileProvider"
android:authorities="com.android.bluetooth.opp.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<service
android:process="@string/process"
android:name = ".btservice.AdapterService">
<intent-filter>
<action android:name="android.bluetooth.IBluetooth" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name=".opp.BluetoothOppService"
android:permission="android.permission.ACCESS_BLUETOOTH_SHARE"
android:enabled="@bool/profile_supported_opp"/>
<receiver
android:process="@string/process"
android:exported="true"
android:name=".opp.BluetoothOppReceiver"
android:enabled="@bool/profile_supported_opp">
<intent-filter>
<action android:name="android.btopp.intent.action.OPEN_RECEIVED_FILES" />
</intent-filter>
</receiver>
<receiver
android:process="@string/process"
android:name=".opp.BluetoothOppHandoverReceiver"
android:permission="com.android.permission.WHITELIST_BLUETOOTH_DEVICE">
<intent-filter>
<action android:name="android.btopp.intent.action.WHITELIST_DEVICE" />
<action android:name="android.btopp.intent.action.STOP_HANDOVER_TRANSFER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.handover.intent.action.HANDOVER_SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.handover.intent.action.HANDOVER_SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</receiver>
<activity android:name=".opp.BluetoothOppLauncherActivity"
android:process="@string/process"
android:theme="@android:style/Theme.Material.Light.Dialog"
android:label="@string/bt_share_picker_label"
android:enabled="@bool/profile_supported_opp">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
<data android:mimeType="audio/*" />
<data android:mimeType="text/x-vcard" />
<data android:mimeType="text/x-vcalendar" />
<data android:mimeType="text/calendar" />
<data android:mimeType="text/plain" />
<data android:mimeType="text/html" />
<data android:mimeType="text/xml" />
<data android:mimeType="application/zip" />
<data android:mimeType="application/vnd.ms-excel" />
<data android:mimeType="application/msword" />
<data android:mimeType="application/vnd.ms-powerpoint" />
<data android:mimeType="application/pdf" />
<data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
<data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
<data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
<data android:mimeType="application/x-hwp" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
<data android:mimeType="x-mixmedia/*" />
<data android:mimeType="text/x-vcard" />
</intent-filter>
<intent-filter>
<action android:name="android.btopp.intent.action.OPEN" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.android.btopp" />
</intent-filter>
</activity>
<activity android:name=".opp.BluetoothOppBtEnableActivity"
android:process="@string/process"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
android:enabled="@bool/profile_supported_opp">
</activity>
<activity android:name=".opp.BluetoothOppBtErrorActivity"
android:process="@string/process"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Material.Light.Dialog.Alert">
</activity>
<activity android:name=".opp.BluetoothOppBtEnablingActivity"
android:process="@string/process"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
android:enabled="@bool/profile_supported_opp">
</activity>
<activity android:name=".opp.BluetoothOppIncomingFileConfirmActivity"
android:process="@string/process"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
android:enabled="@bool/profile_supported_opp">
</activity>
<activity android:name=".opp.BluetoothOppTransferActivity"
android:process="@string/process"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
android:enabled="@bool/profile_supported_opp">
</activity>
<activity android:name=".opp.BluetoothOppTransferHistory"
android:process="@string/process"
android:label=""
android:excludeFromRecents="true"
android:configChanges="orientation|keyboardHidden"
android:enabled="@bool/profile_supported_opp"
android:theme="@android:style/Theme.DeviceDefault.Settings">
<intent-filter>
<action android:name="com.android.bluetooth.action.TransferHistory" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".pbap.BluetoothPbapActivity"
android:process="@string/process"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
android:enabled="@bool/profile_supported_pbap">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service
android:process="@string/process"
android:name=".pbap.BluetoothPbapService"
android:enabled="@bool/profile_supported_pbap" >
<intent-filter>
<action android:name="android.bluetooth.IBluetoothPbap" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name=".map.BluetoothMapService"
android:enabled="@bool/profile_supported_map" >
<intent-filter>
<action android:name="android.bluetooth.IBluetoothMap" />
<action android:name="android.btmap.intent.action.SHOW_MAPS_SETTINGS" />
<action android:name="com.android.bluetooth.map.USER_CONFIRM_TIMEOUT"/>
</intent-filter>
</service>
<activity android:name=".map.BluetoothMapSettings"
android:process="@string/process"
android:label="@string/bluetooth_map_settings_title"
android:excludeFromRecents="true"
android:configChanges="orientation|keyboardHidden"
android:enabled="@bool/profile_supported_map">
</activity>
<provider android:name=".map.MmsFileProvider"
android:authorities="com.android.bluetooth.map.MmsFileProvider"
android:enabled="true"
android:grantUriPermissions="true"
android:exported="false">
</provider>
<service
android:process="@string/process"
android:name=".mapclient.MapClientService"
android:enabled="@bool/profile_supported_mapmce" >
<intent-filter>
<action android:name="android.bluetooth.IBluetoothMapClient" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name=".sap.SapService"
android:enabled="@bool/profile_supported_sap" >
<intent-filter>
<action android:name="android.bluetooth.IBluetoothSap" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".gatt.GattService"
android:enabled="@bool/profile_supported_gatt">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothGatt" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".hfp.HeadsetService"
android:enabled="@bool/profile_supported_hs_hfp">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothHeadset" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".a2dp.A2dpService"
android:enabled="@bool/profile_supported_a2dp">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothA2dp" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".a2dpsink.A2dpSinkService"
android:enabled="@bool/profile_supported_a2dp_sink">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothA2dpSink" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name=".avrcpcontroller.BluetoothMediaBrowserService"
android:exported="true"
android:enabled="@bool/profile_supported_a2dp_sink"
android:label="@string/a2dp_sink_mbs_label">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".avrcp.AvrcpTargetService"
android:enabled = "@bool/profile_supported_avrcp_target" >
<intent-filter>
<action android:name="android.bluetooth.IBluetoothAvrcp" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".avrcpcontroller.AvrcpControllerService"
android:enabled="@bool/profile_supported_avrcp_controller">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothAvrcpController" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".hid.HidHostService"
android:enabled="@bool/profile_supported_hid_host">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothHidHost" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".hid.HidDeviceService"
android:enabled="@bool/profile_supported_hid_device">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothHidDevice" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".pan.PanService"
android:enabled="@bool/profile_supported_pan">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothPan" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".hfpclient.HeadsetClientService"
android:enabled="@bool/profile_supported_hfpclient">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothHeadsetClient" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name=".hfpclient.connserv.HfpClientConnectionService"
android:permission="android.permission.BIND_CONNECTION_SERVICE"
android:enabled="@bool/hfp_client_connection_service_enabled">
<intent-filter>
<!-- Mechanism for Telecom stack to connect -->
<action android:name="android.telecom.ConnectionService" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".pbapclient.PbapClientService"
android:enabled="@bool/profile_supported_pbapclient">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothPbapClient" />
</intent-filter>
</service>
<service
android:process="@string/process"
android:name = ".hearingaid.HearingAidService">
<intent-filter>
<action android:name="android.bluetooth.IBluetoothHearingAid" />
</intent-filter>
</service>
<!-- Authenticator for PBAP account. -->
<service
android:process="@string/process"
android:name=".pbapclient.AuthenticationService"
android:exported="true"
android:enabled="@bool/profile_supported_pbapclient">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
</application>
</manifest>