HarmonyOS鸿蒙Next中wifiManager addCandidateConfig 重启后,wifi 配置丢失

HarmonyOS鸿蒙Next中wifiManager addCandidateConfig 重启后,wifi 配置丢失

let networkId = await wifiManager.addCandidateConfig(config)
wifiManager.connectToCandidateConfig(networkId)

当应用登录时,可以自动连接,但是一旦重启后配置就丢失了。addCandidateConfig是非持久化的吗?还是需要传入特定的参数才可以持久化

3 回复

开发者您好,为了更快解决您的问题,尽量补全以下信息: (如下信息根据实际情况选择)

  1. 复现代码(如最小复现demo或者代码片段),addCandidateConfig接口是持久化的,应用重启后也是可以获取到之前添加的候选网络配置的,或者可以尝试下面的代码是否可以正常运行:
import { wifiManager } from '@kit.ConnectivityKit';
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  build() {
    Column({space: 10}) {
      Text(this.message)
        .id('WifiManagerDemoHelloWorld')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          this.message = 'Welcome';
        })
      Button('获取扫描结果')
        .onClick(() => {
          let scanInfoList = wifiManager.getScanInfoList();
        })
      Button('添加网络候选配置')
        .onClick(() => {
          try {
            let config:wifiManager.WifiDeviceConfig = {
              ssid : "你的WiFi名称",
              preSharedKey : "你的WiFi密码",
              securityType : 3
            }
            wifiManager.addCandidateConfig(config).then(result => {
              console.info("result:" + JSON.stringify(result));
            }).catch((err:number) => {
              console.error("failed:" + JSON.stringify(err));
            });
          }catch(error){
            console.error("failed:" + JSON.stringify(error));
          }
        })
      Button('获取候选网络配置')
        .onClick(() => {
          try {
            let configs = wifiManager.getCandidateConfigs();
            console.info("configs:" + JSON.stringify(configs));
            let len = configs.length;
            console.log("result len: " + len);
            if(len > 0){
              for (let i = 0; i < len; ++i) {
                console.info("ssid: " + configs[i].ssid);
                console.info("bssid: " + configs[i].bssid);
              }
            }
          }catch(error){
            console.error("failed:" + JSON.stringify(error));
          }
        })
    }
    .height('100%')
    .width('100%')    
  }
}
  1. 版本信息(如:开发工具、手机系统版本信息);

更多关于HarmonyOS鸿蒙Next中wifiManager addCandidateConfig 重启后,wifi 配置丢失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,wifiManager.addCandidateConfig添加的Wi-Fi配置默认作为临时候选网络,重启后系统不会自动保存。配置丢失是预期行为,因该接口设计用于临时连接测试而非持久化存储。若需永久配置,应使用wifiManager.addNetwork接口并显式调用保存方法。鸿蒙的Wi-Fi管理机制区分临时配置与持久配置,重启后仅保留持久化配置。

在HarmonyOS Next中,addCandidateConfig方法默认是非持久化的,重启设备后配置会丢失。如需持久化Wi-Fi配置,需要使用addNetworkConfig方法替代。该方法会将配置保存到系统级Wi-Fi配置列表中,重启后仍可自动连接。请修改代码为:

let networkId = await wifiManager.addNetworkConfig(config);
wifiManager.connectToNetwork(networkId);

注意:使用持久化配置需要申请相应的系统权限,并确保配置参数完整有效。

回到顶部