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

    <!-- 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|privileged"/>

    <!--  Allows temporarily acceptlisting Bluetooth addresses for sharing -->
    <permission android:name="com.android.permission.ALLOWLIST_BLUETOOTH_DEVICE"
         android:label="@string/permlab_bluetoothAcceptlist"
         android:description="@string/permdesc_bluetoothAcceptlist"
         android:protectionLevel="signature|privileged"/>

    <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
    <uses-permission android:name="android.permission.BLUETOOTH_MAP"/>
    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
    <uses-permission android:name="android.permission.BLUETOOTH_STACK"/>
    <uses-permission android:name="android.permission.CALL_PRIVILEGED"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL"/>
    <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
    <uses-permission android:name="android.permission.DEVICE_POWER"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.HIDE_OVERLAY_WINDOWS"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH"/>
    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE" />
    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES"/>
    <uses-permission android:name="android.permission.MANAGE_COMPANION_DEVICES"/>
    <uses-permission android:name="android.permission.MANAGE_USERS"/>
    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
    <uses-permission android:name="android.permission.NET_ADMIN"/>
    <uses-permission android:name="android.permission.NET_TUNNELING"/>
    <uses-permission android:name="android.permission.NETWORK_FACTORY"/>
    <uses-permission android:name="android.permission.NFC_HANDOVER_STATUS"/>
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG" />
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    <uses-permission android:name="android.permission.QUERY_AUDIO_STATE"/>
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.REAL_GET_TASKS"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
    <uses-permission android:name="android.permission.TETHER_PRIVILEGED"/>
    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_SECURITY_LOG"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_SMS"/>

    <uses-sdk android:minSdkVersion="14"/>

    <!-- For PBAP Owner Vcard Info -->
    <uses-permission android:name="android.permission.READ_PROFILE"/>
    <application android:name="com.android.bluetooth.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:memtagMode="async">

        <service android:process="@string/process"
             android:name="com.android.bluetooth.btservice.AdapterService"
             android:exported="true"
             android:permission="android.permission.ACCESS_BLUETOOTH_SHARE">
            <intent-filter>
                <action android:name="android.bluetooth.IBluetooth"/>
            </intent-filter>
        </service>

        <service android:process="@string/process"
             android:name="com.android.bluetooth.notification.NotificationHelperService"
             android:label="Notification Helper"
             android:exported="true"
             android:permission="android.permission.BLUETOOTH_PRIVILEGED">
            <intent-filter>
                <action android:name="android.bluetooth.notification.action.SEND_TOGGLE_NOTIFICATION"/>
            </intent-filter>
        </service>

        <service android:process="@string/process"
             android:name="com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService"
             android:enabled="true"
             android:exported="true"
             android:label="@string/a2dp_sink_mbs_label">
            <intent-filter>
                <action android:name="android.media.browse.MediaBrowserService"/>
            </intent-filter>
            <meta-data android:name="androidx.car.app.launchable" android:value="true" />
        </service>
        <provider android:process="@string/process"
             android:name="com.android.bluetooth.avrcpcontroller.AvrcpCoverArtProvider"
             android:authorities="com.android.bluetooth.avrcpcontroller.AvrcpCoverArtProvider"
             android:enabled="false"
             android:grantUriPermissions="true"
             android:exported="true">
        </provider>
        <activity android:name="com.android.bluetooth.BluetoothPrefs"
             android:exported="true"
             android:enabled="false">
            <intent-filter>
                <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
            </intent-filter>
            <meta-data android:name="distractionOptimized" android:value="true"/>
        </activity>

        <service
            android:name="com.android.bluetooth.telephony.BluetoothInCallService"
            android:permission="android.permission.BIND_INCALL_SERVICE"
            android:process="@string/process"
            android:enabled="false"
            android:exported="true">
            <meta-data android:name="android.telecom.INCLUDE_SELF_MANAGED_CALLS"
                       android:value="true" />
            <intent-filter>
              <action android:name="android.telecom.InCallService"/>
            </intent-filter>
         </service>
        <service android:process="@string/process"
             android:name="com.android.bluetooth.hfpclient.HfpClientConnectionService"
             android:permission="android.permission.BIND_CONNECTION_SERVICE"
             android:enabled="true"
             android:exported="true">
            <intent-filter>
                <action android:name="android.telecom.ConnectionService"/>
            </intent-filter>
        </service>

        <provider android:name="com.android.bluetooth.map.MmsFileProvider"
             android:authorities="com.android.bluetooth.map.MmsFileProvider"
             android:enabled="false"
             android:grantUriPermissions="true"
             android:exported="false">
        </provider>

        <provider android:name="com.android.bluetooth.opp.BluetoothOppProvider"
             android:authorities="com.android.bluetooth.opp"
             android:enabled="false"
             android:exported="true"
             android:process="@string/process">
            <path-permission android:pathPrefix="/btopp"
                 android:permission="android.permission.ACCESS_BLUETOOTH_SHARE"/>
        </provider>
        <receiver android:process="@string/process"
             android:name="com.android.bluetooth.opp.BluetoothOppReceiver"
             android:exported="true"
             android:enabled="false">
        </receiver>
        <receiver android:process="@string/process"
              android:name="com.android.bluetooth.opp.BluetoothOppHandoverReceiver"
              android:permission="com.android.permission.ALLOWLIST_BLUETOOTH_DEVICE"
              android:exported="true"
              android:enabled="false">
            <intent-filter>
                <action android:name="android.btopp.intent.action.ACCEPTLIST_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="com.android.bluetooth.opp.BluetoothOppLauncherActivity"
             android:process="@string/process"
             android:theme="@android:style/Theme.Translucent.NoTitleBar"
             android:label="@string/bt_share_picker_label"
             android:enabled="false"
             android:exported="true">
            <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="com.android.bluetooth.opp.BluetoothOppBtEnableActivity"
             android:process="@string/process"
             android:excludeFromRecents="true"
             android:theme="@style/dialog"
             android:enabled="false">
        </activity>
        <activity android:name="com.android.bluetooth.opp.BluetoothOppBtErrorActivity"
             android:process="@string/process"
             android:excludeFromRecents="true"
             android:theme="@style/dialog"
             android:enabled="false">
        </activity>
        <activity android:name="com.android.bluetooth.opp.BluetoothOppBtEnablingActivity"
             android:process="@string/process"
             android:excludeFromRecents="true"
             android:theme="@style/dialog"
             android:enabled="false">
        </activity>
        <activity android:name="com.android.bluetooth.opp.BluetoothOppIncomingFileConfirmActivity"
             android:process="@string/process"
             android:excludeFromRecents="true"
             android:theme="@style/dialog"
             android:enabled="false">
        </activity>
        <activity android:name="com.android.bluetooth.opp.BluetoothOppTransferActivity"
             android:process="@string/process"
             android:excludeFromRecents="true"
             android:theme="@style/dialog"
             android:enabled="false">
        </activity>
        <activity android:name="com.android.bluetooth.opp.BluetoothOppTransferHistory"
             android:process="@string/process"
             android:label=""
             android:excludeFromRecents="true"
             android:configChanges="orientation|keyboardHidden"
             android:enabled="false"
             android:theme="@android:style/Theme.DeviceDefault.Settings"
             android:exported="true">
            <intent-filter>
                <action android:name="com.android.bluetooth.action.TransferHistory"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

        <activity android:name="com.android.bluetooth.pbap.BluetoothPbapActivity"
             android:process="@string/process"
             android:excludeFromRecents="true"
             android:theme="@style/dialog"
             android:enabled="false">
        </activity>

        <service android:process="@string/process"
             android:name="com.android.bluetooth.pbapclient.PbapClientAccountAuthenticatorService"
             android:enabled="false"
             android:exported="true">
            <intent-filter>
                <action android:name="android.accounts.AccountAuthenticator"/>
            </intent-filter>
            <meta-data android:name="android.accounts.AccountAuthenticator"
                 android:resource="@xml/authenticator"/>
        </service>
    </application>
</manifest>
