鸿蒙开发系列(HarmonyOS)获取Wifi信息方法案例

[复制链接]
发表于 2025-11-1 20:33:14 | 显示全部楼层 |阅读模式
鸿蒙NEXT开发实战往期必看文章:
一分钟相识”纯血版!鸿蒙HarmonyOS Next应用开发!
“非常详细的” 鸿蒙HarmonyOS Next应用开发学习蹊径!(从零底子入门到醒目)
HarmonyOS NEXT应用开发案例实践总团结(一连更新......)
HarmonyOS NEXT应用开发性能优化实践总结(一连更新......)

1. Wifi信息简介

对于移动装备来说,一样平常都提供了无线网卡,可以在必要时毗连无线网络,这时间就可以获取干系的无线网络信息,好比热门名称、毗连频段、链接速率、IP地点、MAC地点等,鸿蒙体系提供了丰富的无线网络管理API,可以轻松获取干系WIFI信息。
2. Wifi信息获取常用方法

鸿蒙封装的wifiManager模块使用如下的方式导入:
  1. import wifiManager from '@ohos.wifiManager';
复制代码
wifiManager模块包罗了浩繁的操纵方法,就本文而言,重点必要把握的是如下三个:
1)isWifiActive(): boolean
查询WLAN是否已使能,如果使用者关闭了Wifi功能,就返回false
2)getLinkedInfo(): Promise<WifiLinkedInfo>
获取WLAN毗连信息,使用Promise异步回调。
3)getIpInfo(): IpInfo
获取IP信息,这是一个同步方法。
3. 获取Wifi信息示例

本示例会获取当前装备的Wifi信息,运行后的初始界面如下所示:


下面详细先容创建该应用的步调。
步调1:创建Empty Ability项目。
步调2:在module.json5设置文件加上对权限的声明:
  1. "requestPermissions": [
  2.       {
  3.         "name": "ohos.permission.GET_WIFI_INFO"
  4.       }
  5.     ]
复制代码
这里添加了获取WIFI信息的权限。
步调3:在Index.ets文件里添加如下的代码
  1. import wifiManager from '@ohos.wifiManager';
  2. @Entry
  3. @Component
  4. struct Index {
  5.   //连接、通讯历史记录
  6.   @State msgHistory: string = ''
  7.   scroller: Scroller = new Scroller()
  8.   build() {
  9.     Row() {
  10.       Column() {
  11.         Text("Wifi信息获取示例")
  12.           .fontSize(14)
  13.           .fontWeight(FontWeight.Bold)
  14.           .width('100%')
  15.           .textAlign(TextAlign.Center)
  16.           .padding(10)
  17.         Flex({ justifyContent: FlexAlign.End, alignItems: ItemAlign.Center }) {
  18.           Button("获取")
  19.             .onClick(() => {
  20.               this.showWifiInfo()
  21.             })
  22.             .width(70)
  23.             .fontSize(14)
  24.             .flexGrow(0)
  25.         }
  26.         .width('100%')
  27.         .padding(10)
  28.         Scroll(this.scroller) {
  29.           Text(this.msgHistory)
  30.             .textAlign(TextAlign.Start)
  31.             .padding(10)
  32.             .width('100%')
  33.             .backgroundColor(0xeeeeee)
  34.         }
  35.         .align(Alignment.Top)
  36.         .backgroundColor(0xeeeeee)
  37.         .height(300)
  38.         .flexGrow(1)
  39.         .scrollable(ScrollDirection.Vertical)
  40.         .scrollBar(BarState.On)
  41.         .scrollBarWidth(20)
  42.       }
  43.       .width('100%')
  44.       .justifyContent(FlexAlign.Start)
  45.       .height('100%')
  46.     }
  47.     .height('100%')
  48.   }
  49.   showWifiInfo() {
  50.     if (wifiManager.isWifiActive()) {
  51.       this.msgHistory += `Wifi可用\r\n`;
  52.       this.showIPInfo()
  53.       this.showLinkedInfo()
  54.     }
  55.     else {
  56.       this.msgHistory += `Wifi不可用\r\n`;
  57.     }
  58.   }
  59.   //显示IP相关信息
  60.   showIPInfo() {
  61.     let ipInfo = wifiManager.getIpInfo();
  62.     let ipAddr = getIpAddrFromNum(ipInfo.ipAddress)
  63.     this.msgHistory += `IP地址: ${ipAddr}\r\n`;
  64.     let gateAddr = getIpAddrFromNum(ipInfo.gateway)
  65.     this.msgHistory += `网关地址: ${gateAddr}\r\n`;
  66.     let maskAddr = getIpAddrFromNum(ipInfo.netmask)
  67.     this.msgHistory += `子网掩码: ${maskAddr}\r\n`;
  68.     let dnsAddr = getIpAddrFromNum(ipInfo.primaryDns)
  69.     this.msgHistory += `DNS服务器: ${dnsAddr}\r\n`;
  70.     let dhcpServer = getIpAddrFromNum(ipInfo.serverIp)
  71.     this.msgHistory += `DHCP服务器: ${dhcpServer}\r\n`;
  72.     this.msgHistory += `租用时长: ${ipInfo.leaseDuration}\r\n`;
  73.   }
  74.   //显示和设备相关信息
  75.   showLinkedInfo() {
  76.     wifiManager.getLinkedInfo()
  77.       .then((linkedInfo) => {
  78.         let len =linkedInfo.ssid.length
  79.         let ssid = linkedInfo.ssid.substring(1,len-1)
  80.         this.msgHistory += `SSID: ${ssid}\r\n`;
  81.         this.msgHistory += `信号强度: ${linkedInfo.rssi}\r\n`;
  82.         this.msgHistory += `网络频段: ${linkedInfo.band}\r\n`;
  83.         this.msgHistory += `链接速度: ${linkedInfo.linkSpeed}\r\n`;
  84.         this.msgHistory += `网络频率: ${linkedInfo.frequency}\r\n`;
  85.         this.msgHistory += `MAC地址: ${linkedInfo.macAddress}\r\n`;
  86.       }
  87.       )
  88.   }
  89. }
  90. //根据数字形式的IP地址获取字符串形式的IP地址
  91. function getIpAddrFromNum(ipNum: number): string {
  92.   return (ipNum >>> 24) + '.' + (ipNum >> 16 & 0xFF) + '.' + (ipNum >> 8 & 0xFF) + '.' + (ipNum & 0xFF);
  93. }
复制代码
步调4:编译运行,可以使用模拟器大概真机。
步调5:单击“获取”按钮,截图如下所示:


如许就完成了一个简朴的Wifi信息获取应用。
3. 重点功能分析

固然本例较简朴,但是有一点要注意,就是从数字情势的IP地点转换为字符串情势的IP地点,这是通过函数getIpAddrFromNum实现的:
  1. //根据数字形式的IP地址获取字符串形式的IP地址
  2. function getIpAddrFromNum(ipNum: number): string {
  3.   return (ipNum >>> 24) + '.' + (ipNum >> 16 & 0xFF) + '.' + (ipNum >> 8 & 0xFF) + '.' + (ipNum & 0xFF);
  4. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表