news 2026/7/14 14:04:50

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
鸿蒙三方库 | harmony-utils之NetworkUtil网络可用性检测详解

前言

网络可用性检测是移动应用的基础能力,在发起网络请求前先检测网络状态,可以避免无效请求并给用户友好提示。@pura/harmony-utilsNetworkUtil封装了网络状态检测方法,一行代码即可判断网络是否可用。本文将从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工具库,更多功能请参考官方文档与后续系列文章。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:03:49

Chrome QRCode:重新定义浏览器内二维码工作流的技术利器

Chrome QRCode:重新定义浏览器内二维码工作流的技术利器 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件,用于生成当前URL或者选中内容的二维码&#x…

作者头像 李华
网站建设 2026/7/14 14:03:45

在Windows上畅享酷安社区:UWP客户端完全指南

在Windows上畅享酷安社区:UWP客户端完全指南 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 想在Windows电脑上体验酷安社区的完整魅力吗?厌倦了在小屏幕手机上刷动…

作者头像 李华
网站建设 2026/7/14 14:03:16

yada路由系统详解:构建灵活RESTful API的终极指南

yada路由系统详解:构建灵活RESTful API的终极指南 【免费下载链接】yada A powerful Clojure web library, full HTTP, full async - see https://juxt.pro/yada/index.html 项目地址: https://gitcode.com/gh_mirrors/ya/yada yada是一个功能强大的Clojure …

作者头像 李华
网站建设 2026/7/14 14:02:51

Bebas Neue免费开源字体终极指南:5个步骤打造专业视觉设计

Bebas Neue免费开源字体终极指南:5个步骤打造专业视觉设计 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue Bebas Neue是全球最受欢迎的开源标题字体之一,这款现代几何字体以其简洁大气的设…

作者头像 李华
网站建设 2026/7/14 14:02:36

Vitedge页面Props处理:前端数据获取的最佳实践指南

Vitedge页面Props处理:前端数据获取的最佳实践指南 【免费下载链接】vitedge Edge-side rendering and fullstack Vite framework 项目地址: https://gitcode.com/gh_mirrors/vi/vitedge 在边缘渲染时代,Vitedge框架为前端开发者带来了革命性的数…

作者头像 李华
网站建设 2026/7/14 14:02:09

实验八、模拟校园网的组网-华为ensp期末作业

一、实验目的 1.考查学生综合运用知识的能力 2.锻炼和激发学生对未知知识的探索与研究 3.促使学生形成一个团队进行分工完成 二、实验内容校园的左半部分为主校区,右半部分为分校区,主校区(area0)的路由协议采用OSPF,分校区的路由协议采用RIP…

作者头像 李华