鸿蒙网络变化监听

200 阅读1分钟

文档

权限

ohos.permission.GET_NETWORK_INFO

connection类

当前网络是否可用

this.hasNet = connection.hasDefaultNetSync()

创建 connection.NetConnection

创建,并且注册网络监听

// 创建一个NetConnection对象
let netCon: connection.NetConnection = connection.createNetConnection();
// 注册网络监听
netCon.register((error: BusinessError) => {
  if (error) {
    console.error(JSON.stringify(error));
    registerResult(false)
  }
  console.log(`网络变化 -----}`)
  registerResult(true)
});

订阅网络变化,只是4g,wifi ,以太网,

没网不走这里

// 订阅网络能力变化事件。调用register后,才能接收到此事件通知
netCon.on('netCapabilitiesChange', (data: connection.NetCapabilityInfo) => {
  console.info("订阅网络能力 data: " + JSON.stringify(data));
  if (data.netCap.bearerTypes) {
    switch (data.netCap.bearerTypes[0]) {
      case connection.NetBearType.BEARER_CELLULAR:
        this.setNetChange(NetType.NET_CELLULAR)
        console.log('当前网络 蜂窝')
        break
      case connection.NetBearType.BEARER_WIFI:
        this.setNetChange(NetType.NET_WIFI)
        console.log('当前网络 Wifi')
        break
      case connection.NetBearType.BEARER_ETHERNET:
        this.setNetChange(NetType.NET_ETHERNET)
        console.log('当前网络 以太网网络')
      case connection.NetBearType.BEARER_VPN:
        this.setNetChange(NetType.NET_VPN)
        console.log('当前网络 VPN')
        break
    }
  }
});

网络丢失,无网

//  订阅网络丢失事件。调用register后,才能接收到此事件通知
netCon.on('netLost', (data: connection.NetHandle) => {
  console.info("丢失事件 data: " + JSON.stringify(data));
  this.setNetChange(NetType.NET_NONE)
});

// 订阅网络不可用事件。调用register后,才能接收到此事件通知
netCon.on('netUnavailable', () => {
  console.info("不可用不知道这个什么时候触发事件 net event");
  this.setNetChange(NetType.NET_NONE)
});