1# @ohos.telephony.observer (observer)(系统接口)
2
3本模块提供订阅管理功能,可以订阅/取消订阅的事件包括:小区信息变化事件、指定卡槽位的小区信息变化事件。
4
5>**说明:**
6>
7>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9>当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.telephony.observer (observer)](js-apis-observer.md)
10
11## 导入模块
12
13```ts
14import { observer } from '@kit.TelephonyKit';
15```
16
17
18## observer.on('cellInfoChange')<sup>8+</sup>
19
20on\(type: \'cellInfoChange\', callback: Callback\<Array\<CellInformation\>\>\): void
21
22订阅小区信息变化事件,使用callback方式作为异步方法。
23
24**系统接口:** 此接口为系统接口。
25
26**需要权限**:ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION
27
28**系统能力**:SystemCapability.Telephony.StateRegistry
29
30**参数:**
31
32| 参数名   | 类型                                                      | 必填 | 说明                                      |
33| -------- | --------------------------------------------------------- | ---- |------------------------------------------|
34| type     | string                                                    | 是   | 小区信息变化事件,固定为'cellInfoChange'。 |
35| callback | Callback\<Array\<[CellInformation](js-apis-radio.md#cellinformation8)\>\> | 是   | 以callback形式异步返回结果。                |
36
37**错误码:**
38
39以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](errorcode-telephony.md)。
40
41| 错误码ID |                  错误信息                    |
42| -------- | -------------------------------------------- |
43| 201      | Permission denied.                           |
44| 202      | Non-system applications use system APIs.     |
45| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.                             |
46| 8300001  | Invalid parameter value.                     |
47| 8300002  | Service connection failed.                   |
48| 8300003  | System internal error.                       |
49| 8300999  | Unknown error.                               |
50
51**示例:**
52
53```ts
54import { radio } from '@kit.TelephonyKit';
55
56observer.on('cellInfoChange', (data: Array<radio.CellInformation>) => {
57    console.log("on cellInfoChange, data:" + JSON.stringify(data));
58});
59```
60
61
62## observer.on('cellInfoChange')<sup>8+</sup>
63
64on\(type: \'cellInfoChange\', options: ObserverOptions, callback: Callback\<Array\<CellInformation\>\>\): void
65
66订阅指定卡槽位的小区信息变化事件,使用callback方式作为异步方法。
67
68**系统接口:** 此接口为系统接口。
69
70**需要权限**:ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION
71
72**系统能力**:SystemCapability.Telephony.StateRegistry
73
74**参数:**
75
76| 参数名 | 类型                                               | 必填 | 说明                                      |
77| ------ |--------------------------------------------------| ---- |--------------------------------------------|
78| type     | string                                           | 是   | 小区信息变化事件,固定为'cellInfoChange'。 |
79| options  | [ObserverOptions](js-apis-observer.md#observeroptions11)            | 是   | 电话相关事件订阅参数可选项。                |
80| callback | Callback\<Array\<[CellInformation](js-apis-radio.md#cellinformation8)\>\> | 是   | 以callback形式异步返回结果。       |
81
82**错误码:**
83
84以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](errorcode-telephony.md)。
85
86| 错误码ID |                  错误信息                    |
87| -------- | -------------------------------------------- |
88| 201      | Permission denied.                           |
89| 202      | Non-system applications use system APIs.     |
90| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.                             |
91| 8300001  | Invalid parameter value.                     |
92| 8300002  | Service connection failed.                   |
93| 8300003  | System internal error.                       |
94| 8300999  | Unknown error.                               |
95
96**示例:**
97
98```ts
99import { radio } from '@kit.TelephonyKit';
100
101let options: observer.ObserverOptions = {
102    slotId: 0
103}
104observer.on('cellInfoChange', options, (data: Array<radio.CellInformation>) => {
105    console.log("on cellInfoChange, data:" + JSON.stringify(data));
106});
107```
108
109
110## observer.off('cellInfoChange')<sup>8+</sup>
111
112off\(type: \'cellInfoChange\', callback?: Callback\<Array\<CellInformation\>\>\): void
113
114取消订阅小区信息变化事件,使用callback方式作为异步方法。
115
116>**说明:**
117>
118>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
119
120**系统接口:** 此接口为系统接口。
121
122**系统能力**:SystemCapability.Telephony.StateRegistry
123
124**参数:**
125
126| 参数名   | 类型                                                      | 必填 | 说明                                                         |
127| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
128| type     | string                                                    | 是   | 小区信息变化事件,固定为'cellInfoChange'。                                            |
129| callback | Callback\<Array\<[CellInformation](js-apis-radio.md#cellinformation8)\>\> | 否   | 以callback形式异步返回结果。|
130
131**错误码:**
132
133以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](errorcode-telephony.md)。
134
135| 错误码ID |                  错误信息                    |
136| -------- | -------------------------------------------- |
137| 202      | Non-system applications use system APIs.     |
138| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.                             |
139| 8300001  | Invalid parameter value.                     |
140| 8300002  | Service connection failed.                   |
141| 8300003  | System internal error.                       |
142| 8300999  | Unknown error.                               |
143
144**示例:**
145
146```ts
147import { radio } from '@kit.TelephonyKit';
148
149let callback: (data: Array<radio.CellInformation>) => void = (data: Array<radio.CellInformation>) => {
150    console.log("on cellInfoChange, data:" + JSON.stringify(data));
151}
152observer.on('cellInfoChange', callback);
153// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
154observer.off('cellInfoChange', callback);
155observer.off('cellInfoChange');
156```
157
158