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![](figures/zh-cn_architecture-of-the-cellular-data-module.png)
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