HarmonyOS 鸿蒙Next 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化
HarmonyOS 鸿蒙Next 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化
使用observer监听网络状态
- 需要权限:ohos.permission.GET_NETWORK_INFO
- 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-observer-0000001815247722-V5
static netListenerObserver(callback?: () => void) {
try {
observer.on('networkStateChange', (data: observer.NetworkState) => {
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
console.info('netListenerObserver', 'networkStateChange', JSON.stringify(data))
});
console.info('netListenerObserver', 'options end')
} catch (e) {
console.error('netListenerObserver', JSON.stringify(e))
}
}
使用wifiManager监听网络状态
- 需要权限:ohos.permission.GET_WIFI_INFO
- 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-wifimanager-0000001813416796
static netListenerWifiManager(callback?: () => void) {
try {
wifiManager.on("wifiStateChange", (result: number) => {
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
console.info('netListenerWifiManager', 'wifiStateChange', JSON.stringify(result))
let netState = ''
if (result == 3 || result == 0) { //断开链接
netState = '已断开'
} else if (result == 1 || result == 2) { //开启链接
netState = '已开启'
}
connection.getDefaultNet((error: BusinessError, data: connection.NetHandle) => {
if (error) {
console.error("netListenerConnection", 'getDefaultNet', JSON.stringify(error));
return;
}
console.info("netListenerConnection", 'getDefaultNet', JSON.stringify(data));
});
});
} catch (e) {
console.error('netListenerWifiManager', JSON.stringify(e))
}
}
使用network监听网络状态
- 需要权限:ohos.permission.GET_WIFI_INFO、ohos.permission.GET_NETWORK_INFO
- 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-system-network-0000001815087850-V5
static netListenerNetwork(callback?: () => void) {
try {
network.subscribe({
success: (data) => {
console.info('netListenerNetwork', 'subscribe', JSON.stringify(data));
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
let netType = data.type
network.getType({
success: (data) => {
console.info('netListenerNetwork', 'getType', JSON.stringify(data));
}
});
}
});
} catch (e) {
console.error('netListenerNetwork', JSON.stringify(e))
}
}
使用connection监听网络状态
- 需要权限:ohos.permission.GET_NETWORK_INFO
- 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-0000001815247586-V5
static netListenerConnection(callback?: () => void) {
try {
// 创建NetConnection对象
let netCon: connection.NetConnection = connection.createNetConnection();
// 先使用register接口注册订阅事件
netCon.register((error: BusinessError) => {
console.info("netListenerConnection", 'register', JSON.stringify(error));
});
// 订阅网络可用事件。调用register后,才能接收到此事件通知
netCon.on('netAvailable', (data: connection.NetHandle) => {
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
console.info("netListenerConnection", 'netAvailable', JSON.stringify(data));
});
// 订阅网络可用事件。调用register后,才能接收到此事件通知
netCon.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
console.info("netListenerConnection", 'netConnectionPropertiesChange', JSON.stringify(data));
});
// 订阅网络可用事件。调用register后,才能接收到此事件通知
netCon.on('netLost', (data: connection.NetHandle) => {
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
console.info("netListenerConnection", 'netLost', JSON.stringify(data));
});
// 订阅网络不可用事件。调用register后,才能接收到此事件通知
netCon.on('netUnavailable', () => {
CommonUtils.postEvent(EventTag.NET_WORK_EVENT_ID)
console.info("netListenerConnection", 'netUnavailable');
});
// connection.getDefaultNet((error: BusinessError, data: connection.NetHandle) => {
// if (error) {
// console.error("netListenerConnection", 'getDefaultNet', JSON.stringify(error));
// return;
// }
// console.info("netListenerConnection", 'getDefaultNet', JSON.stringify(data));
// });
} catch (e) {
console.error('netListenerConnection', JSON.stringify(e))
}
}
更多关于HarmonyOS 鸿蒙Next 使用network subscribe时 从有网(WIFI)- 没网(none)无法监听到网络变化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,使用network subscribe功能时,若遇到从有网(WIFI)到没网(none)无法监听到网络变化的问题,这通常与网络状态监听机制或相关API的使用不当有关。
请确认以下几点:
-
权限检查:确保应用已正确申请并获得了网络状态变化的权限。
-
API使用:检查network subscribe的API调用是否正确,包括注册监听器、处理回调等步骤。确保API版本与鸿蒙系统版本兼容。
-
网络状态广播:鸿蒙系统可能通过广播或特定API通知网络状态变化。确认是否漏掉了关键的广播接收器或回调处理逻辑。
-
系统日志:查看系统日志,分析是否有关于网络状态变化的相关错误或警告信息。
-
模拟与实测:尝试在不同设备、不同网络环境下复现问题,以排除特定环境或设备的问题。
-
文档与社区:查阅最新的鸿蒙开发者文档,或在鸿蒙开发者社区中搜索类似问题,看是否有其他开发者遇到并解决了相同的问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html