HarmonyOS鸿蒙Next中wifiManager addCandidateConfig 重启后,wifi 配置丢失
HarmonyOS鸿蒙Next中wifiManager addCandidateConfig 重启后,wifi 配置丢失
let networkId = await wifiManager.addCandidateConfig(config)
wifiManager.connectToCandidateConfig(networkId)
当应用登录时,可以自动连接,但是一旦重启后配置就丢失了。addCandidateConfig是非持久化的吗?还是需要传入特定的参数才可以持久化
3 回复
开发者您好,为了更快解决您的问题,尽量补全以下信息: (如下信息根据实际情况选择)
- 复现代码(如最小复现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%')
}
}
- 版本信息(如:开发工具、手机系统版本信息);
更多关于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);
注意:使用持久化配置需要申请相应的系统权限,并确保配置参数完整有效。