HarmonyOS鸿蒙Next中通过wifiManager来连接Wi-Fi

HarmonyOS鸿蒙Next中通过wifiManager来连接Wi-Fi 本文介绍了在HarmonyOS应用开发过程中,如何通过wifiManager来连接Wi-Fi。

Wi-Fi及STA模式简介

无线局域网(Wireless Local Area Networks,WLAN),是通过无线电、红外光信号或者其他技术发送和接收数据的局域网,用户可以通过WLAN实现节点之间无物理连接的网络通讯。常用于用户携带可移动终端的办公、公众环境中。

Wi-Fi(Wireless Fidelity),是一种基于无线电波的通信技术,用于设备之间传输数据,使得用户可以无需使用有线连接即可访问互联网和共享数据。

WLAN系统为用户提供接入WLAN网络功能(STA模式)、点对点的数据传输功能(P2P模式)和热点分享功能(AP模式),让应用可以通过WLAN和其他设备互联互通。

Wi-Fi STA模式(Station Mode,站点模式)是无线设备作为客户端接入无线局域网(WLAN)的工作模式。在该模式下,设备(如手机、电脑、平板等)通过连接到接入点(AP,Access Point)或无线路由器,实现对网络的访问。

应用实现

应用实现步如下:

  1. 建立Wi-Fi连接
  2. 导入需要的Wi-Fi模块。
  3. 开启设备的Wi-Fi。
  4. 需要SystemCapability.Communication.WiFi.STA系统能力。
  5. 需要申请权限ohos.permission.GET_WIFI_INFOohos.permission.SET_WIFI_INFO

示例代码:

import { wifiManager }  from '@kit.ConnectivityKit';

@Entry
@Component
struct Index {
  @State ssid: string = ''
  @State securityType: string = ''
  @State password: string = ''


  build() {
    Column() {

      Row() {
        Text('WiFi名称:')
        TextInput({ text: this.ssid })
          .width('80%')
          .onChange((value) => {
            this.ssid = value
          })
      }.margin(10)

      Row() {
        Text('密码:')
        TextInput({ text: this.password })
          .type(InputType.Password)
          .width('80%')
          .onChange((value) => {
            this.password = value
          })
      }.margin(10)

      // 操作按钮
      Row() {
        Button('连接该网络')
          .type(ButtonType.Capsule)
          .fontColor(Color.White)
          .margin(10)
          .onClick(() => {
            // 连接到WiFi
            this.connectToWifi()
          })

      }
      .width('100%')
      .height('10%')
      .justifyContent(FlexAlign.Center)
    }
    .height('100%')
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }

  // 连接到WiFi
  private connectToWifi() {

    let config:wifiManager.WifiDeviceConfig = {
      ssid : this.ssid,
      preSharedKey : this.password,
      securityType : 3
    }

    console.info('config:' + JSON.stringify(config));

    // 添加候选网络配置
    wifiManager.addCandidateConfig(config).then(result => {
      // 连接至网络
      console.info('addCandidateConfig result:' + JSON.stringify(result));

      wifiManager.connectToCandidateConfig(result);
    }).catch((err: number) => {
      console.error('failed:' + JSON.stringify(err));
    });

  }
}

权限设置如下:

"requestPermissions": [
  {
    "name": "ohos.permission.SET_WIFI_INFO",
    "usedScene": {
      "abilities": [
        "EntryAbility"
      ],
      "when": "inuse"
    }
  },
  {
    "name": "ohos.permission.GET_WIFI_INFO",
    "usedScene": {
      "abilities": [
        "EntryAbility"
      ],
      "when": "inuse"
    }
  }
]

运行应用,界面效果如下。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251111082014.22387510864255232801765570617284:50001231000000:2800:806512A2B4C3F2F5D20CCE5206F0D54F760B7537CDC690ACD4EC41ABB661A6A7.jpg

输入Wi-Fi账号、密码,点击应用“连接该网络”,界面效果如下。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251111082030.54376139116868745684747840876111:50001231000000:2800:37F6D325A846B4965457A78D3547E2F50847BA3506715431DFC3C1601862F380.jpghttps://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251111082030.29526484134522310690694826922158:50001231000000:2800:2F1FD4B61E5C92012357391C3F3363EDCE00805C3B494988B9B9C0E32E711477.jpg

在浏览器里面访问被访问的应用,界面效果如下。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/042/413/002/0000000000042413002.20251111082040.09352959359719799763995634296557:50001231000000:2800:814ABB7DA2A0AA4931AAD83A35090DA7987EA92DF93795BA2E26AF9BF710F6F3.jpg

完整示例详见文末链接《跟老卫学HarmonyOS开发》中“ArkTSWifiManagerConnectToWifi”。

参考引用

加入鸿蒙生态,共建万物互联。以下是鸿蒙应用开发常用教程。


更多关于HarmonyOS鸿蒙Next中通过wifiManager来连接Wi-Fi的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,使用wifiManager连接Wi-Fi需先获取Wi-Fi管理器实例。通过wifiManager.scan()扫描可用网络,获取目标Wi-Fi的SSID和加密类型。调用wifiManager.connectToNetwork()方法,传入包含SSID、密码和安全协议的WifiDeviceConfig配置对象。系统将自动尝试连接,连接结果通过回调返回成功或失败状态。整个过程需申请ohos.permission.MANAGE_WIFI_CONNECTION网络权限。

更多关于HarmonyOS鸿蒙Next中通过wifiManager来连接Wi-Fi的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢分享这篇关于在HarmonyOS Next中使用wifiManager连接Wi-Fi的详细教程!内容非常全面,涵盖了从Wi-Fi基础概念到实际代码实现的完整流程。

代码示例清晰地展示了如何通过@kit.ConnectivityKit中的wifiManager模块进行Wi-Fi连接配置。特别值得肯定的是:

  1. 权限配置完整:正确申请了ohos.permission.GET_WIFI_INFOohos.permission.SET_WIFI_INFO权限,这是Wi-Fi操作的必要前提。

  2. API使用规范:采用了addCandidateConfig()connectToCandidateConfig()的标准流程,符合HarmonyOS的Wi-Fi连接最佳实践。

  3. 错误处理完善:通过Promise的then/catch机制进行了完整的错误捕获和处理。

  4. 安全类型设置:在WifiDeviceConfig中设置了securityType为3,对应WPA/WPA2 PSK加密方式,这是目前最常用的安全标准。

对于实际开发中的一些补充点:

  • 在连接前建议先检查Wi-Fi是否已开启
  • 可以添加连接状态监听来实时获取连接结果
  • 对于不同的加密类型,securityType需要相应调整

这个示例为开发者提供了一个很好的Wi-Fi连接功能实现模板,可以直接参考使用。

回到顶部