首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙开发进阶(HarmonyOS)网络共享管理(仅对系统应用开放)

  • 25-02-16 11:40
  • 2360
  • 13755
blog.csdn.net

 鸿蒙NEXT开发实战往期必看文章:

一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!

“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)

HarmonyOS NEXT应用开发案例实践总结合(持续更新......)

HarmonyOS NEXT应用开发性能优化实践总结(持续更新......)


简介

网络共享管理分享设备已有网络给其他连接设备,支持 Wi-Fi 热点共享、蓝牙共享和 USB 共享,同时提供网络共享状态、共享流量查询功能。

说明: 为了保证应用的运行效率,大部分 API 调用都是异步的,对于异步调用的 API 均提供了 callback 和 Promise 两种方式,以下示例均采用 promise 函数,更多方式可以查阅API 参考。

基本概念

  • WIFI 共享:通过 WIFI 热点共享网络。
  • 蓝牙共享:通过蓝牙共享网络。
  • USB 共享:通过 USB 共享网络。

约束

  • 开发语言:JS
  • 本模块首批接口从 API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

场景介绍

网络共享的典型场景有:

  • 开启网络共享
  • 停止网络共享
  • 获取共享网络的数据流量

以下分别介绍具体开发方式。

接口说明

完整的 JS API 说明以及实例代码请参考:网络共享。

接口名描述
isSharingSupported(callback: AsyncCallback): void;获取当前系统是否支持网络共享,使用 callback 方式作为异步方法。
isSharing(callback: AsyncCallback): void;获取当前共享状态,使用 callback 方式作为异步方法。
startSharing(type: SharingIfaceType, callback: AsyncCallback): void;开启共享,type 为共享类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法。
stopSharing(type: SharingIfaceType, callback: AsyncCallback): void;停止指定类型共享,type 为共享类型,包括 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法。
getStatsRxBytes(callback: AsyncCallback): void;获取共享接收数据量,单位 KB,使用 callback 方式作为异步方法。
getStatsTxBytes(callback: AsyncCallback): void;获取共享发送数据量,单位 KB,使用 callback 方式作为异步方法。
getStatsTotalBytes(callback: AsyncCallback): void;获取共享总数据流量,单位 KB,使用 callback 方式作为异步方法。
getSharingIfaces(state: SharingIfaceState, callback: AsyncCallback>): void;获取指定状态的网卡名称,state 为状态,包括正在共享、可共享、共享错误,使用 callback 方式作为异步方法。
getSharingState(type: SharingIfaceType, callback: AsyncCallback): void;获取指定类型共享状态,type 为类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法。
getSharableRegexes(type: SharingIfaceType, callback: AsyncCallback>): void;获取与指定类型匹配的网卡正则表达式列表,type 为类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法。
on(type: ‘sharingStateChange’, callback: Callback): void;注册共享状态改变监听,返回网络共享的状态。
off(type: ‘sharingStateChange’, callback?: Callback): void;注销共享状态改变监听,返回网络共享的状态。
unction on(type: ‘interfaceSharingStateChange’, callback: Callback<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void;注册指定网卡共享状态改变监听。
off(type: ‘interfaceSharingStateChange’, callback?: Callback<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void;注销指定网卡共享状态改变监听。
on(type: ‘sharingUpstreamChange’, callback: Callback): void;注册上行网卡改变监听。
off(type: ‘sharingUpstreamChange’, callback?: Callback): void;注销上行网卡改变监听。

开启网络共享

  1. 从@kit.NetworkKit 中导入 sharing 命名空间。
  2. 注册监听共享状态的改变。
  3. 调用 startSharing 方法,来开启指定类型共享。
  4. 接收到共享状态开启的回调,开启共享成功。
  1. // 从@kit.NetworkKit中导入sharing命名空间
  2. import { sharing } from '@kit.NetworkKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 注册监听共享状态的改变
  5. sharing.on('sharingStateChange', (data: boolean) => {
  6. console.log(JSON.stringify(data));
  7. });
  8. // 调用startSharing方法,来开启指定类型共享
  9. sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI).then(() => {
  10. console.log('start wifi sharing successful');
  11. }).catch((error: BusinessError) => {
  12. console.log('start wifi sharing failed');
  13. });
  14. ts

停止网络共享

开发步骤

  1. 从@kit.NetworkKit 中导入 sharing 命名空间。
  2. 注册监听共享状态的改变。
  3. 调用 stopSharing 方法,来停止指定类型共享。
  4. 接收到共享状态关闭的回调,停止共享成功。
  1. // 从@kit.NetworkKit中导入sharing命名空间
  2. import { sharing } from '@kit.NetworkKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 注册监听共享状态的改变
  5. sharing.on('sharingStateChange', (data: boolean) => {
  6. console.log(JSON.stringify(data));
  7. });
  8. // 调用stopSharing方法,来停止指定类型共享
  9. sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI).then(() => {
  10. console.log('start wifi sharing successful');
  11. }).catch((error: BusinessError) => {
  12. console.log('start wifi sharing failed');
  13. });
  14. ts

获取共享网络的数据流量

开发步骤

  1. 从@kit.NetworkKit 中导入 sharing 命名空间。
  2. 调用 startSharing 方法,来开启指定类型共享。
  3. 调用 getStatsTotalBytes 方法,来获取共享网络数据量。
  4. 调用 stopSharing 方法,来停止指定类型共享,共享网络数据量清零。
  1. // 从@kit.NetworkKit中导入sharing命名空间
  2. import { sharing } from '@kit.NetworkKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. // 调用startSharing方法,来开启指定类型共享
  5. sharing.startSharing(sharing.SharingIfaceType.SHARING_WIFI).then(() => {
  6. console.log('start wifi sharing successful');
  7. }).catch((error: BusinessError) => {
  8. console.log('start wifi sharing failed');
  9. });
  10. // 调用getStatsTotalBytes方法,来获取共享网络数据量
  11. sharing.getStatsTotalBytes().then((data: number) => {
  12. console.log(JSON.stringify(data));
  13. }).catch((error: BusinessError) => {
  14. console.log(JSON.stringify(error));
  15. });
  16. // 调用stopSharing方法,来停止指定类型共享,共享网络数据量清零
  17. sharing.stopSharing(sharing.SharingIfaceType.SHARING_WIFI).then(() => {
  18. console.log('start wifi sharing successful');
  19. }).catch((error: BusinessError) => {
  20. console.log('start wifi sharing failed');
  21. });
  22. // 再次调用getStatsTotalBytes方法,共享网络数据量已清零
  23. sharing.getStatsTotalBytes().then((data: number) => {
  24. console.log(JSON.stringify(data));
  25. }).catch((error: BusinessError) => {
  26. console.log(JSON.stringify(error));
  27. });

 

注:本文转载自blog.csdn.net的你不要给我蛙蛙叫啊的文章"https://blog.csdn.net/wea22984984/article/details/143211364"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top