HarmonyOS鸿蒙Next中我要做WiFi扫描功能,请问这个接口能不能使用?

HarmonyOS鸿蒙Next中我要做WiFi扫描功能,请问这个接口能不能使用?

wifiManager.getScanInfoList()

一直爆红,说是没有这个方法。

另外,请问定义数组的时候到底要怎么定义?

@State scanList: Array<WifiScanInfo> = []

我需要把WifiScanInfo手动定义成一个接口吗?

cke_231.png


更多关于HarmonyOS鸿蒙Next中我要做WiFi扫描功能,请问这个接口能不能使用?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

确定导入是否正确,该模块主要提供WLAN基础功能(无线接入、无线加密、无线漫游等)、P2P(peer-to-peer)服务的基础功能和WLAN消息通知的相应服务。

import wifiManager from '@ohos.wifiManager'

定义数组没问题。

更多关于HarmonyOS鸿蒙Next中我要做WiFi扫描功能,请问这个接口能不能使用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


还需要导入别的吗?我翻文档只需要导入这一个模块就行了。然后在module.json5文件里面声明了

"requestPermissions": [
  {
    "name": "ohos.permission.GET_WIFI_INFO",
    "reason": "$string:app_name"
  }
]

如果定义数组没问题,那这个数组报错是因为模块导入不正确导致的吗?

对,之前导入模块不正确。 该接口说明返回扫描到的热点列表。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的bssid为真实设备地址,否则为随机设备地址。

我之前导入WiFi模块写的是// import { wifiManager } from ‘@kit.ConnectivityKit’; 换成了import wifiManager from ‘@ohos.wifiManager’ 就是下面的报错。麻烦再帮我看一下,感谢感谢

hvigor ERROR: Failed :entry:default@CompileArkTS… hvigor WARN: 1 WARN: ArkTS:WARN File: D:/HuaWei/AutoLTbx/entry/src/main/ets/pages/devices.ets:28:21 Function may throw exceptions. Special handling is required.

hvigor ERROR: ArkTS Compiler Error 1 ERROR: 10505001 ArkTS Compiler Error Error Message: Cannot find name ‘WifiScanInfo’. At File: D:/HuaWei/AutoLTbx/entry/src/main/ets/pages/devices.ets:26:26

COMPILE RESULT:FAIL {ERROR:2 WARN:1}

  • Try:

Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

hvigor ERROR: BUILD FAILED in 700 ms

Process finished with exit code -1,

1、确保模块正常导入

import wifiManager from '@ohos.wifiManager'

2、确保属性正常引用:

可以参考下面例子进行各项信息获取

   try {
        let scanInfoList = wifiManager.getScanInfoList();
        console.info("scanInfoList:" + JSON.stringify(scanInfoList));
        let len = scanInfoList.length;
        console.log("wifi received scan info: " + len);
        if(len > 0){
            for (let i = 0; i < len; ++i) {
                console.info("ssid: " + scanInfoList[i].ssid);
                console.info("bssid: " + scanInfoList[i].bssid);
                console.info("capabilities: " + scanInfoList[i].capabilities);
                console.info("securityType: " + scanInfoList[i].securityType);
                console.info("rssi: " + scanInfoList[i].rssi);
                console.info("band: " + scanInfoList[i].band);
                console.info("frequency: " + scanInfoList[i].frequency);
                console.info("channelWidth: " + scanInfoList[i].channelWidth);
                console.info("timestamp: " + scanInfoList[i].timestamp);
                console.info("supportedWifiCategory: " + scanInfoList[i].supportedWifiCategory);
                console.info("isHiLinkNetwork: " + scanInfoList[i].isHiLinkNetwork);
            }
        }    
    }catch(error){
        console.error("failed:" + JSON.stringify(error));
    }

API说明:wifiManager.getScanInfoList

获取包含当前时间点前30s内的缓存扫描结果。

类型 说明
Array<WifiScanInfo> 返回扫描到的热点列表。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的bssid为真实设备地址,否则为随机设备地址。

3、确保权限已经申请:

谢谢!我已经解决了!

在HarmonyOS Next中,WiFi扫描功能可以使用@ohos.wifiManager模块中的scan()接口实现。该接口属于系统API,需要申请ohos.permission.SET_WIFI_INFOohos.permission.GET_WIFI_INFO权限。调用后会触发扫描,结果通过on('scanResultsReady')事件回调返回。

在HarmonyOS Next中,wifiManager.getScanInfoList() 接口已废弃,无法直接使用。WiFi扫描功能需要使用新的API。

1. 新的WiFi扫描接口: 请使用 @ohos.wifiManager 模块中的 scangetScanResults 方法。

  • 发起扫描: 调用 wifi.scan() 方法。
  • 获取结果: 调用 wifi.getScanResults() 方法。其返回值类型即为 Array<WifiScanInfo>

示例代码:

import { wifi } from '@ohos.wifiManager';

// 发起WiFi扫描
wifi.scan();

// 获取扫描结果
let scanResults: Array<wifi.WifiScanInfo> = wifi.getScanResults();

2. 数组定义问题: 您的定义 @State scanList: Array<WifiScanInfo> = [] 在语法上是正确的。关键在于 WifiScanInfo 类型的来源。

  • 不需要手动定义接口。 WifiScanInfo@ohos.wifiManager 模块中已定义好的类型。
  • 正确做法是 从模块中导入该类型,或直接使用 wifi.WifiScanInfo 作为完整类型路径。

修正后的数组定义示例:

// 方式一:导入类型
import { wifi, WifiScanInfo } from '@ohos.wifiManager';
@State scanList: Array<WifiScanInfo> = [];

// 方式二:使用完整命名空间
import { wifi } from '@ohos.wifiManager';
@State scanList: Array<wifi.WifiScanInfo> = [];

总结:

  1. 停止使用 getScanInfoList(),改用 scan() + getScanResults()
  2. WifiScanInfo 是系统预定义类型,无需手动定义,直接从 @ohos.wifiManager 模块引用即可。
回到顶部