| <?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> |
| |
| <activity |
| android:name=".BluetoothPrefs" |
| android:exported="@bool/profile_supported_a2dp_sink" |
| android:enabled="@bool/profile_supported_a2dp_sink"> |
| <intent-filter> |
| <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> |
| </intent-filter> |
| </activity> |
| |
| <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> |