尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

鸿蒙三方库 | harmony-utils之NetworkUtil网络可用性检测详解

鸿蒙三方库 | harmony-utils之NetworkUtil网络可用性检测详解
📅 发布时间:2026/7/14 14:13:05

前言

网络可用性检测是移动应用的基础能力,在发起网络请求前先检测网络状态,可以避免无效请求并给用户友好提示。@pura/harmony-utils的NetworkUtil封装了网络状态检测方法,一行代码即可判断网络是否可用。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、NetworkUtil可用性核心API

NetworkUtil提供了以下网络可用性检测方法:

方法说明返回类型使用场景
isNetworkAvailable()判断网络是否可用boolean网络请求前检查
hasInternet()判断是否有互联网连接boolean互联网可达性
isNetworkConnected()判断网络是否连接boolean网络状态查询

1.1 核心特性

  • 简洁易用:封装复杂API为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 快速响应:同步返回结果,无需异步等待

1.2 网络状态判断策略

场景推荐方法说明
网络请求前isNetworkAvailable()综合判断网络可用性
互联网检测hasInternet()判断是否能访问互联网
UI状态展示isNetworkConnected()显示网络连接状态

二、完整使用步骤

2.1 安装依赖

ohpminstall@pura/harmony-utils

2.2 检测网络可用性

import{NetworkUtil}from'@pura/harmony-utils';Button('检测网络可用性').width('100%').onClick(()=>{try{letavailable=NetworkUtil.isNetworkAvailable();this.result=`网络可用:${available?'是 ✅':'否 ❌'}\n${available?'可以发起网络请求':'请检查网络设置'}`;}catch(e){this.result='异常: '+e;}})

2.3 网络请求前检查

asyncfetchData(){if(!NetworkUtil.isNetworkAvailable()){ToastUtil.show('网络不可用,请检查网络设置');return;}letdata=awaitthis.api.getData();this.dataList=data;}

三、完整页面示例

import{NetworkUtil}from'@pura/harmony-utils';@Entry@Componentstruct NetworkAvailDemo{@Stateresult:string='';build(){Column({space:12}){Button('检测网络').width('100%').onClick(()=>{try{letavailable=NetworkUtil.isNetworkAvailable();this.result=`网络状态:${available?'可用 ✅':'不可用 ❌'}`;}catch(e){this.result='异常: '+e;}});Text(this.result).fontSize(14).fontColor('#333333')}.padding(16)}}

四、进阶用法

4.1 网络状态全局拦截器

import{NetworkUtil,ToastUtil}from'@pura/harmony-utils';asyncfunctionsafeRequest(requestFn:Function){if(!NetworkUtil.isNetworkAvailable()){ToastUtil.showToast('网络不可用,请稍后重试');returnnull;}returnawaitrequestFn();}

4.2 网络状态UI指示器

@StatenetworkAvailable:boolean=true;aboutToAppear(){this.networkAvailable=NetworkUtil.isNetworkAvailable();}

五、注意事项

  1. 权限配置:需要在module.json5中配置网络权限
  2. 实时性:返回的是调用时刻的网络状态
  3. 网络切换:网络状态可能随时变化,建议使用订阅方式
  4. 初始化依赖:使用前需确保AppUtil.init()已调用
  5. 多次检测:关键操作前建议再次检测

六、常见问题

Q1: isNetworkAvailable()返回true但无法访问网络?

可能是连接了WiFi但无法访问互联网,建议使用hasInternet()进一步检测。

Q2: 如何实时监听网络状态变化?

使用NetworkUtil.onNetworkChange()订阅网络变化事件。

Q3: 飞行模式下返回什么?

飞行模式下所有网络检测方法都返回false。

Q4: 网络权限需要配置哪个?

需要在module.json5中配置ohos.permission.INTERNET权限。


总结

NetworkUtil的网络可用性检测方法为应用提供了快速的网络状态判断能力。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。在网络请求前检测网络状态,可以避免无效请求并提升用户体验。

本文基于@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。

相关新闻

  • Mistral-7B-Instruct-v0.3_rai_1.7.1_hybrid与原版模型对比:AMD混合量化技术带来的8大性能提升
  • 抖音视频批量下载神器:3分钟掌握免费高效下载技巧
  • 青岛高端财税合规企业前几名 头部机构服务能力盘点 - 信息热点

最新新闻

  • 2026年阳离子交换树脂厂家综合排行 推荐米象 - 起跑123
  • 【单片机毕业设计】基于 STM32 的智能水温水位监测与定时饮水提醒系统设计,基于 STM32 单片机的恒温储水智能控制装置设计与实现(011802)
  • 零代码AI游戏开发实战:从贪吃蛇到RPG的完整实现指南
  • LLM 服务网关的高并发优化——Reactor Netty 线程模型与背压策略
  • 三行代码解锁高通设备AI潜能:GenieX如何重新定义设备端大模型部署
  • Saga模式:分布式事务的另一种解法

日新闻

  • AWS SSM安全运维实践:零公网暴露的合规远程开发方案
  • Tableau 2024.1 图表选择指南:5种业务场景与最佳图表类型匹配
  • dsPIC33FJ与CMT-8540S-SMT在嵌入式音频处理中的高效应用

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号