蓝牙配对后如何在系统蓝牙界面显示已连接
===================

#### 问题现象

蓝牙配对后，系统蓝牙界面只显示该设备已配对，如何使系统蓝牙界面已配对的设备显示“已连接”？

#### 背景知识

系统蓝牙界面显示“已连接”需要发起配对的应用去连蓝牙的profile，可以使用[connection.connectAllowedProfiles](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bluetooth-connection#connectionconnectallowedprofiles16-1)接口连接对端设备支持的profile（只包括A2DP、HFP和HID）。

*   需先调用[connection.pairDevice](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bluetooth-connection#connectionpairdevice)发起配对，且仅允许在每次发起配对后30s内调用此接口一次。
*   当配对成功后，建议先调用[getRemoteProfileUuids](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bluetooth-connection#connectiongetremoteprofileuuids12)主动查询目标设备支持的profile能力。若存在应用需要的能力，才调用此接口。
*   目标设备支持的profile能力可参考[ProfileUuids](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bluetooth-constant#profileuuids12)通用唯一标识（Universally Unique Identifier，UUID）。

#### 解决方案

三方应用在蓝牙配对成功后，需要主动使用[connection.connectAllowedProfiles](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bluetooth-connection#connectionconnectallowedprofiles16-1)接口连接对端设备支持的profile，才能在系统蓝牙界面显示“已连接”。

参考示例如下：

import { connection } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct connectAllowedProfiles {
  connectAllowedProfiles() {
    _// 发起蓝牙配对请求，此处的mac需要提前获取_
    connection.pairDevice('xx.xx.xx.xx', (err: BusinessError) => {
      console.info(\`pairDevice, device name err:${err}\`);
    });

    _// 订阅蓝牙配对状态变化事件_
    connection.on('bondStateChange', (data: connection.BondStateParam) => {
     _ // 蓝牙已配对_
      if (data.state === connection.BondState.BOND\_STATE\_BONDED) {
       _ // 调用getRemoteProfileUuids接口获取对端蓝牙支持的Profile类型_
        connection.getRemoteProfileUuids(data.deviceId,
          (err: BusinessError, dataArray: Array<connection.ProfileUuids>) => {
            console.error(\`getRemoteProfileUuids errCode: ${(err as BusinessError).code}, errMessage: ${(err as BusinessError).message}, dataArray: ${dataArray}\`);
          _  // 当dataArray中支持类型包含A2DP、HFP和HID其中的一种，可调用connectAllowedProfiles接口发起连接。_
            connection.connectAllowedProfiles(data.deviceId, (err: BusinessError) => {
              if (err) {
                console.error(\`connectAllowedProfiles errCode: ${(err as BusinessError).code}, errMessage: ${(err as BusinessError).message}\`);
                return;
              }
              console.info('connectAllowedProfiles');
            });
          });
      }
    });
  }

  build() {
    Column() {
      Button('connect Allowed Profiles')
        .onClick(() => {
       _   // 创建蓝牙配对状态变化监听，发起蓝牙配对，连接蓝牙_
          this.connectAllowedProfiles();
        });
    };
  }
}

权限说明：需要在module.json5文件中配置允许应用接入蓝牙并使用蓝牙功能权限[ohos.permission.ACCESS\_BLUETOOTH](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/permissions-for-all-user#ohospermissionaccess_bluetooth)。