1# 蜂窝数据<a name="ZH-CN_TOPIC_0000001105538940"></a> 2 3- [简介](#section117mcpsimp) 4- [目录](#section121mcpsimp) 5- [约束](#section125mcpsimp) 6- [接口说明](#section131mcpsimp) 7- [使用说明](#section160mcpsimp) 8 - [获取蜂窝数据开关是否打开](#section192mcpsimp) 9 - [获取蜂窝数据状态](#section213mcpsimp) 10 - [获取蜂窝移动数据是否启用](#section234mcpsimp) 11 12 [获取蜂窝数据漫游是否启用](#section255mcpsimp) 13 14- [相关仓](#section234mcpsimp) 15 16## 简介<a name="section117mcpsimp"></a> 17 18蜂窝数据模块作为电话子系统可裁剪部件,依赖于core\_service核心服务、ril\_adapter。 具有蜂窝数据激活、蜂窝数据异常检测与恢复、蜂窝数据状态管理、蜂窝数据开关管理、蜂窝数据漫游管理、APN管理、网络管理交互等功能。 19 20**图 1** 蜂窝数据模块架构图<a name="fig332493822512"></a> 21 22 23## 目录<a name="section121mcpsimp"></a> 24 25``` 26base/telephony/cellular_data/ 27├── figures # Readme资源文件 28├── frameworks # 框架层目录 29│ ├── js # js相关代码 30│ └── native # native相关代码 31├── interfaces # 接口目录 32│ ├── innerkits # 部件间的内部接口 33│ └── kits # 对应用提供的接口(例如JS接口) 34├── sa_profile # SA配置 35├── services # 蜂窝数据服务代码目录 36│ ├── include # 蜂窝数据服务头文件目录 37│ └── src # 蜂窝数据服务实现代码目录 38│ ├── apn_manager # APN管理代码目录 39│ ├── state_machine # 数据连接状态机代码目录 40│ └── utils # 蜂窝数据工具代码目录 41└── test # 蜂窝数据测试代码目录 42 └── unit_test # 单元测试相关代码 43``` 44 45## 约束<a name="section125mcpsimp"></a> 46 47- 开发语言:Java Script。 48- 软件上,需要与以下服务配合使用:Telephony核心服务(core\_service)、RIL适配(ril\_adapter)。 49- 硬件上,需要搭载的设备支持以下硬件:可以进行独立蜂窝通信的Modem以及SIM卡。 50 51## 接口说明<a name="section131mcpsimp"></a> 52 53**表 1** 蜂窝数据对外提供的接口 54 55<a name="table133mcpsimp"></a> 56 57| 接口名称 | 接口描述 | 所需权限 | 58| ------------------------------------------------------------ | ------------------------------------------------------------ | -------------------------------- | 59| function isCellularDataEnabled(callback: AsyncCallback\<boolean>): void; | 获取蜂窝数据开关是否打开 | ohos.permission.GET_NETWORK_INFO | 60| function getCellularDataState(callback: AsyncCallback\<DataConnectState>): void; | 获取蜂窝数据状态 | ohos.permission.GET_NETWORK_INFO | 61| function isCellularDataEnabledSync(): boolean; | 获取蜂窝移动数据服务是否启用 | ohos.permission.GET_NETWORK_INFO | 62| function isCellularDataRoamingEnabledSync(slotId: number): boolean; | 获取蜂窝数据漫游服务是否启用(参数slotId为SIM卡id,0表示卡一,1表示卡二) | ohos.permission.GET_NETWORK_INFO | 63 64完整的JS API说明以及实例代码请参考:[蜂窝数据](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-telephony-kit/js-apis-telephony-data.md)。 65 66## 使用说明<a name="section160mcpsimp"></a> 67 68### 获取蜂窝数据开关是否打开<a name="section192mcpsimp"></a> 69 701. 可以通过callback或者Promise的方式调用isCellularDataEnabled获取蜂窝数据开关是否打开。 712. 该接口为异步接口,相关执行结果会从callback中返回。 72 73 ``` 74 import data from "@ohos.telephony.data"; 75 76 // 调用接口【callback方式】 77 data.isCellularDataEnabled((err, value) => { 78 if (err) { 79 // 接口调用失败,err非空 80 console.error(`failed to isCellularDataEnabled because ${err.message}`); 81 return; 82 } 83 // 接口调用成功,err为空 84 console.log(`success to isCellularDataEnabled: ${value}`); 85 }); 86 87 // 调用接口【Promise方式】 88 let promise = data.isCellularDataEnabled(); 89 promise.then((value) => { 90 // 接口调用成功,此处可以实现成功场景分支代码。 91 console.log(`success to isCellularDataEnabled: ${value}`); 92 }).catch((err) => { 93 // 接口调用失败,此处可以实现失败场景分支代码。 94 console.error(`failed to isCellularDataEnabled because ${err.message}`); 95 }); 96 ``` 97 98### 获取蜂窝移动数据服务是否启用<a name="section234mcpsimp"></a> 99 1001. 可以通过调用isCellularDataEnabledSync获取蜂窝移动数据服务是否启用。 1012. 该接口为同步接口,相关执行结果会从isCellularDataEnabledSync中返回。 102 103 ``` 104 import data from "@ohos.telephony.data"; 105 106 try { 107 // 调用接口【Sync方式】 108 let isEnabled: boolean = data.isCellularDataEnabledSync(); 109 // 调用接口成功 110 console.log(`isCellularDataEnabledSync success : ${isEnabled}`); 111 } catch (error) { 112 // 调用接口失败 113 console.log(`isCellularDataEnabledSync failed`); 114 } 115 ``` 116 117### 获取蜂窝数据漫游服务是否启用<a name="section255mcpsimp"></a> 118 1191. 可以通过调用isCellularDataRoamingEnabledSync获取蜂窝数据漫游服务是否启用。 1202. 该接口为同步接口,相关执行结果会从isCellularDataRoamingEnabledSync中返回。 121 122 ``` 123 import data from "@ohos.telephony.data"; 124 125 try { 126 // 调用接口【Sync方式】 127 let isEnabled: boolean = data.isCellularDataRoamingEnabledSync(0); 128 // 调用接口成功 129 console.log(`isCellularDataRoamingEnabledSync success : ${isEnabled}`); 130 } catch (error) { 131 // 调用接口失败 132 console.log(`isCellularDataRoamingEnabledSync failed`); 133 } 134 ``` 135 136### 获取蜂窝数据状态<a name="section213mcpsimp"></a> 137 138**表 2** DataConnectState枚举值 139 140<a name="table21531410101919"></a> 141 142| 名称 | 值 | 说明 | 143| ----------------------- | ---- | -------- | 144| DATA_STATE_UNKNOWN | -1 | 未知 | 145| DATA_STATE_DISCONNECTED | 0 | 连接断开 | 146| DATA_STATE_CONNECTING | 1 | 连接中 | 147| DATA_STATE_CONNECTED | 2 | 已连接 | 148| DATA_STATE_SUSPENDED | 3 | 已挂起 | 149 150 1511. 可以通过callback或者Promise的方式调用getCellularDataState获取蜂窝数据状态。 1522. 该接口为异步接口,相关执行结果会从callback中返回。 153 154 ``` 155 import data from "@ohos.telephony.data"; 156 157 // 调用接口【callback方式】 158 data.getCellularDataState((err, value) => { 159 if (err) { 160 // 接口调用失败,err非空 161 console.error(`failed to getCellularDataState because ${err.message}`); 162 return; 163 } 164 // 接口调用成功,err为空 165 console.log(`success to getCellularDataState: ${value}`); 166 }); 167 168 // 调用接口【Promise方式】 169 let promise = data.getCellularDataState(); 170 promise.then((value) => { 171 // 接口调用成功,此处可以实现成功场景分支代码。 172 console.log(`success to getCellularDataState: ${value}`); 173 }).catch((err) => { 174 // 接口调用失败,此处可以实现失败场景分支代码。 175 console.error(`failed to getCellularDataState because ${err.message}`); 176 }); 177 ``` 178 179## 相关仓<a name="section234mcpsimp"></a> 180 181[电话服务子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/电话服务子系统.md) 182 183telephony_cellular_data 184 185[telephony_core_service](https://gitee.com/openharmony/telephony_core_service/blob/master/README_zh.md) 186 187[telephony_ril_adapter](https://gitee.com/openharmony/telephony_ril_adapter/blob/master/README_zh.md) 188 189