官方文档:https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/reference/apis-network-kit/js-apis-net-connection.md#onnetavailable

首先我有个以太网开关是由一个属性控制的

sys.ifconfig.eth0(自己加的),up的时候是打开,down是关闭。测试的时候我是连接以太网线的状态,然后打开和关闭以太网开关测试。
//创建一个NetConnection对象
//网络类型可以在这里查看:
https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/reference/apis-network-kit/js-apis-net-connection.md#netbeartype

let netConnectionCellular = connection.createNetConnection({
  netCapabilities: {
    bearerTypes: [connection.NetBearType.BEARER_ETHERNET] //专注监测以太网络状态
  }
})

 private createNetConnection() : void{
    //默认关注以太网络
    netConnectionCellular.register((error : BusinessError) =>{
      console.log(`'error: '${JSON.stringify(error)}`);
    })

     //订阅网络连接信息变化事件
     netConnectionCellular.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
       console.info("Succeeded to get data: " + JSON.stringify(data));
     })
    
    //订阅网络可用事件
    netConnectionCellular.on('netAvailable', (data: connection.NetHandle) => {
      console.info("Succeeded to get netAvailable data: " + JSON.stringify(data));
    })

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

  //取消关注以太网络3
  private desoryNetConnection() : void{
    netConnectionCellular.unregister((error: BusinessError) => {
      console.log(JSON.stringify(error));
    });
  }

经测试,关闭以太网络会触发‘netLost’事件,打开以太网会触发‘netAvailable’事件,从动态配置改为静态配置以太网络信息后会触发‘netConnectionPropertiesChange’事件。然后就可以在对应事件做自己的逻辑啦

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐