HarmonyOS 如何实现随时可以拿到设备当前是否联网?

用如下代码进行对网络进行监听,希望随时可以通过MyNetConnection的isNetAvailable方法得到设备当前是否联网。应用中MyNetConnection是一个单例对象。但实际测试,发现仅是第一次调用startNetStatusMonitor方法时,可以收到netAvailable或者netUnavailable回调。当在手机上操作关闭网络,开启网络时,再回到应用里面都无法收到网络状态的变化回调。如何实现随时可以拿到设备当前是否联网?

export class MyNetConnection {

  private _netCon: connection.NetConnection = connection.createNetConnection()
  private _isNetAvailable: boolean = true
  public isNetAvailable(): boolean {
    return this._isNetAvailable
  }

  public startNetStatusMonitor(): void {
    this._netCon.register((error: BusinessError) => {});
    this._netCon.on('netAvailable', (data: connection.NetHandle) => {
      this._isNetAvailable = true
    });
    this._netCon.on('netUnavailable', () => {
      this._isNetAvailable = false
    });
  }
}
HarmonyOS
2024-12-27 17:22:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

netUnavailable:网络不可用事件,意思是连接到网络,但网络不可用。

netLost:网络严重中断或正常断开事件,意思是设备没有连接到网络。

举例的话:netUnavailable是连接wifi但是wifi有问题的时候触发回调,断开wifi会通过netLost回调。

'netAvailable’用于当前网络可用状态的监听 在当前连接可以进行访问的网络时返回, 'netUnavailable’事件为网络已连接但不可访问时返回时回调, netAvailable和netUnavailable均需要以连接网络状态为前提,网络可用调用netAvailable,网络不可用调用netUnavailable。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5#onnetavailable

根据描述的情况,应该需要使用netLost

分享
微博
QQ
微信
回复
2024-12-27 20:03:47
相关问题
怎样判断当前设备是否连接了VPN?
1395浏览 • 1回复 待解决
如何获取当前设备设备名称
3019浏览 • 1回复 待解决
获取定位信息是否必须联网
1945浏览 • 1回复 待解决
NAN无法配网成功,设备联网失败
9069浏览 • 2回复 待解决
如何获取当前设备的宽度?
1107浏览 • 1回复 待解决
HarmonyOS 如何获取当前设备的 IP 地址
716浏览 • 1回复 待解决
定位是否必须联网才能成功?
2276浏览 • 1回复 待解决