<?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.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" />

    <!-- 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">
        <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="android.support.v4.content.FileProvider"
            android:authorities="com.google.android.bluetooth.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.bluetooth.adapter.action.STATE_CHANGED" />
                <!--action android:name="android.intent.action.BOOT_COMPLETED" /-->
                <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/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">
        </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>
        <receiver
            android:process="@string/process"
            android:exported="true"
            android:name=".pbap.BluetoothPbapReceiver"
            android:enabled="@bool/profile_supported_pbap">
            <intent-filter>
                <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
                <action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_REPLY" />
                <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        <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=".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=".a2dpsink.mbs.A2dpMediaBrowserService"
            android:exported="true"
            android:enabled="@bool/profile_supported_a2dp_sink">
            <intent-filter>
                <action android:name="android.media.browse.MediaBrowserService" />
            </intent-filter>
        </service>
        <service
            android:process="@string/process"
            android:name = ".avrcp.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.HidService"
            android:enabled="@bool/profile_supported_hid">
            <intent-filter>
                <action android:name="android.bluetooth.IBluetoothInputDevice" />
            </intent-filter>
        </service>
        <service
            android:process="@string/process"
            android:name = ".hdp.HealthService"
            android:enabled="@bool/profile_supported_hdp">
            <intent-filter>
                <action android:name="android.bluetooth.IBluetoothHealth" />
            </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>
        <!-- Authenticator for PBAP account. -->
        <service
            android:process="@string/process"
            android:name=".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>