HarmonyOS 鸿蒙Next怎么判断当前网络是否可用

发布于 1周前 作者 yuanlaile 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next怎么判断当前网络是否可用

怎么判断当前网络是否能上网?

5 回复

可以订阅网络可用事件on(‘netAvailable’),监听网络是否可用

netConnection: connection.NetConnection = connection.createNetConnection()
this.netConnection.on('netAvailable', () => {
    });
    this.netConnection.on('netUnavailable', () => {
      
    });
    this.netConnection.on('netLost', () => {
    });

更多关于HarmonyOS 鸿蒙Next怎么判断当前网络是否可用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


function netConnectionListener() {
  let netCon: connection.NetConnection = connection.createNetConnection();
  // 先使用register接口注册订阅事件
  netCon.register((error: BusinessError) => {
    console.log(JSON.stringify(error));
    if (error) {
      if (error.code == 201) {
        promptAction.showToast({
          message: `请在src/main/module.json5添加权限 "name": "ohos.permission.GET_NETWORK_INFO"`,
          duration: 2000,
          bottom: '500lpx'
        });
      } else {
        promptAction.showToast({
          message: `${JSON.stringify(error)}`,
          duration: 2000,
          bottom: '500lpx'
        });
      }
      return;
    }
    promptAction.showToast({
      message: `已开启 网络状态监听`,
      duration: 2000,
      bottom: '500lpx'
    });
  });
  // 订阅网络丢失事件。调用register后,才能接收到此事件通知
  netCon.on('netLost', (data: connection.NetHandle) => {
    console.info("Succeeded to get data: netLost " + JSON.stringify(data));
    promptAction.showToast({
      message: `已关闭 网络`,
      duration: 2000,
      bottom: '500lpx'
    });
  });
  // 订阅网络能力变化事件。调用register后,才能接收到此事件通知
  netCon.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
    console.info("Succeeded to get data: netConnectionPropertiesChange " + JSON.stringify(data));
    promptAction.showToast({
      message: `已开启 网络`,
      duration: 2000,
      bottom: '500lpx'
    });
  });
}
ping就好了

在HarmonyOS 鸿蒙Next系统中,判断当前网络是否可用,可以通过访问系统的网络状态API来实现。以下是一个直接的方法,利用ConnectivityManager类来获取网络状态:

  1. 获取ConnectivityManager实例

    val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    
  2. 检查网络可用性

    val activeNetwork: Network? = connectivityManager.activeNetworkInfo?.network
    val capabilities = connectivityManager.getNetworkCapabilities(activeNetwork)
    val hasTransport = capabilities?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true ||
                       capabilities?.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) == true ||
                       capabilities?.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) == true
    
    val isNetworkAvailable = activeNetwork != null && hasTransport
    

isNetworkAvailable变量最终会是一个布尔值,表示当前是否有可用的网络连接。

如果isNetworkAvailabletrue,则表示网络可用;如果为false,则表示当前没有可用的网络连接。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部