js-apis-observer.md 24.0 KB
Newer Older
Y
YOUR_NAME 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
# observer

>**说明:**
>
>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```
import observer from '@ohos.telephony.observer'
```

C
clevercong 已提交
14
## observer.on('networkStateChange')
Y
YOUR_NAME 已提交
15 16 17 18 19

on\(type: \'networkStateChange\', callback: Callback<NetworkState\>\): void;

订阅网络状态变化事件,使用callback方式作为异步方法。

C
clevercong 已提交
20
**需要权限**:ohos.permission.GET_NETWORK_INFO
Y
YOUR_NAME 已提交
21 22 23 24 25

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

C
clevercong 已提交
26 27 28 29
| 参数名   | 类型                                                      | 必填 | 说明                                                         |
| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                                    | 是   | 网络状态变化事件                                             |
| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 是   | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) |
Y
YOUR_NAME 已提交
30 31 32

**示例:**

Z
zengyawen 已提交
33
```js
Y
YOUR_NAME 已提交
34 35 36 37 38 39
observer.on('networkStateChange', data =>{ 
    console.log("on networkStateChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
40
## observer.on('networkStateChange')
Y
YOUR_NAME 已提交
41 42 43 44 45

on\(type: \'networkStateChange\', options: { slotId: number }, callback: Callback<NetworkState\>\): void;

订阅指定卡槽位的网络状态变化事件,使用callback方式作为异步方法。

C
clevercong 已提交
46
**需要权限**:ohos.permission.GET_NETWORK_INFO
Y
YOUR_NAME 已提交
47 48 49 50 51 52 53 54 55

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| type     | string                                    | 是   | 网络状态变化事件                  |
| slotId | number | 是   | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 |
C
clevercong 已提交
56
| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 是   | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) |
Y
YOUR_NAME 已提交
57 58 59

**示例:**

Z
zengyawen 已提交
60
```js
Y
YOUR_NAME 已提交
61 62 63 64 65 66
observer.on('networkStateChange', {slotId: 0}, data =>{ 
    console.log("on networkStateChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
67
## observer.off('networkStateChange')
Y
YOUR_NAME 已提交
68 69 70 71 72

off\(type: \'networkStateChange\', callback?: Callback<NetworkState\>\): void;

取消订阅网络状态变化事件,使用callback方式作为异步方法。

C
clevercong 已提交
73
**需要权限**:ohos.permission.GET_NETWORK_INFO
Y
YOUR_NAME 已提交
74 75 76 77 78 79 80 81 82

>**说明:**
>
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

C
clevercong 已提交
83 84 85 86
| 参数名   | 类型                                                      | 必填 | 说明                                                         |
| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                                                    | 是   | 网络状态变化事件                                             |
| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 否   | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) |
Y
YOUR_NAME 已提交
87 88 89

**示例:**

Z
zengyawen 已提交
90
```js
Y
YOUR_NAME 已提交
91 92 93 94 95 96 97 98 99
let callback = data => {
    console.log("on networkStateChange, data:" + JSON.stringify(data));
}
observer.on('networkStateChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
observer.off('networkStateChange', callback);
observer.off('networkStateChange');
```

C
clevercong 已提交
100
## observer.on('signalInfoChange')
Y
YOUR_NAME 已提交
101 102 103 104 105 106 107 108 109 110 111 112

on\(type: \'signalInfoChange\', callback: Callback<Array<SignalInformation\>\>): void;

订阅信号状态变化事件,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 信号状态变化事件                                             |
C
clevercong 已提交
113
| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是   | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) |
Y
YOUR_NAME 已提交
114 115 116

**示例:**

Z
zengyawen 已提交
117
```js
Y
YOUR_NAME 已提交
118 119 120 121 122 123
observer.on('signalInfoChange', data =>{ 
    console.log("on signalInfoChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
124
## observer.on('signalInfoChange')
Y
YOUR_NAME 已提交
125 126 127 128 129 130 131 132 133 134 135 136 137

on\(type: \'signalInfoChange\', options: { slotId: number }, callback: Callback<Array<SignalInformation\>\>): void;

订阅指定卡槽位的信号状态变化事件,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名 | 类型   | 必填 | 说明                                   |
| ------ | ------ | ---- | -------------------------------------- |
| type     | string                                    | 是   | 信号状态变化事件                |
| slotId | number | 是   | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 |
C
clevercong 已提交
138
| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是   | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) |
Y
YOUR_NAME 已提交
139 140 141

**示例:**

Z
zengyawen 已提交
142
```js
Y
YOUR_NAME 已提交
143 144 145 146 147 148
observer.on('signalInfoChange', {slotId: 0}, data =>{ 
    console.log("on signalInfoChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
149
## observer.off('signalInfoChange')
Y
YOUR_NAME 已提交
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

off\(type: \'signalInfoChange\', callback?: Callback<Array<SignalInformation\>\>): void;

取消订阅信号状态变化事件,使用callback方式作为异步方法。

>**说明:**
>
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 信号状态变化事件                                             |
C
clevercong 已提交
166
| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 否   | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) |
Y
YOUR_NAME 已提交
167 168 169

**示例:**

Z
zengyawen 已提交
170
```js
Y
YOUR_NAME 已提交
171 172 173 174 175 176 177 178 179
let callback = data => {
    console.log("on signalInfoChange, data:" + JSON.stringify(data));
}
observer.on('signalInfoChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
observer.off('signalInfoChange', callback);
observer.off('signalInfoChange');
```

180

C
clevercong 已提交
181
## observer.on('callStateChange')
182

C
clevercong 已提交
183
on(type: 'callStateChange', callback: Callback\<{ state: CallState, number: string }\>): void;
184 185 186 187 188 189 190 191 192 193 194 195

订阅通话状态变化事件,使用callback方式作为异步方法。

**需要权限**:ohos.permission.READ_CALL_LOG

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 通话状态变化事件                                             |
C
clevercong 已提交
196
| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是   | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 |
197 198 199

**示例:**

Z
zengyawen 已提交
200
```js
201 202 203 204 205 206
observer.on('callStateChange', value =>{ 
    console.log("on callStateChange, state:" + value.state + ", number:" + value.number);
});
```


C
clevercong 已提交
207
## observer.on('callStateChange')
208

C
clevercong 已提交
209
on(type: 'callStateChange', options: { slotId: number }, callback: Callback<{ state:CallState, number: string }>): void;
210 211 212 213 214 215 216 217 218 219 220 221 222

订阅通话状态变化事件,使用callback方式作为异步方法。

**需要权限**:ohos.permission.READ_CALL_LOG

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 通话状态变化事件                                             |
| slotId   | number                                                       | 是   | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2                       |
C
clevercong 已提交
223
| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是   | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 |
224 225 226

**示例:**

Z
zengyawen 已提交
227
```js
228 229 230 231 232 233
observer.on('callStateChange', {slotId: 0}, value =>{ 
    console.log("on callStateChange, state:" + value.state + ", number:" + value.number);
});
```


C
clevercong 已提交
234
## observer.off('callStateChange')
235

C
clevercong 已提交
236
off(type: 'callStateChange', callback?: Callback<{ state: CallState, number: string }>): void;
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252

取消订阅通话状态变化事件,使用callback方式作为异步方法。

**需要权限**:ohos.permission.READ_CALL_LOG

>**说明:**
>
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 通话状态变化事件                                             |
C
clevercong 已提交
253
| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 否   | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 |
254 255 256

**示例:**

Z
zengyawen 已提交
257
```js
258 259 260 261 262 263 264 265
let callback = value => {
    console.log("on callStateChange, state:" + value.state + ", number:" + value.number);
}
observer.on('callStateChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
observer.off('callStateChange', callback);
observer.off('callStateChange');
```
Y
YOUR_NAME 已提交
266 267


C
clevercong 已提交
268
## observer.on('cellularDataConnectionStateChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
269

C
clevercong 已提交
270
on\(type: 'cellularDataConnectionStateChange', callback: Callback\<{ state: DataConnectState, network: RatType}\>\): void;
Y
YOUR_NAME 已提交
271 272 273 274 275 276 277 278 279 280

订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 蜂窝数据链路连接状态事件                                     |
Z
zengyawen 已提交
281
| callback | Callback\<{ state: [DataConnectState](js-apis-telephony-data.md#dataconnectstate), network: [RatType](js-apis-radio.md#radiotechnology) }\> | 是   | 回调函数,参考data的[DataConnectState](js-apis-telephony-data.md#dataconnectstate),radio的[RadioTechnology](js-apis-radio.md#radiotechnology)。 |
Y
YOUR_NAME 已提交
282 283 284

**示例:**

Z
zengyawen 已提交
285
```js
Y
YOUR_NAME 已提交
286 287 288 289 290 291
observer.on('cellularDataConnectionStateChange', value =>{
    console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network);
});
```


C
clevercong 已提交
292
## observer.on('cellularDataConnectionStateChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
293

C
clevercong 已提交
294
on\(type: 'cellularDataConnectionStateChange', options: { slotId: number }, callback: Callback\<{ state: DataConnectState, network: RatType }\>\): void;
Y
YOUR_NAME 已提交
295 296 297 298 299 300 301 302 303 304 305

订阅指定卡槽位的蜂窝数据链路连接状态,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 蜂窝数据链路连接状态事件                                     |
| slotId   | number                                                       | 是   | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2                       |
Z
zengyawen 已提交
306
| callback | Callback\<{ state: [DataConnectState](js-apis-telephony-data.md#dataconnectstate), network: [RatType](js-apis-radio.md#radiotechnology) }\> | 是   | 回调函数,参考data的[DataConnectState](js-apis-telephony-data.md#dataconnectstate),radio的[RadioTechnology](js-apis-radio.md#radiotechnology)。 |
Y
YOUR_NAME 已提交
307 308 309

**示例:**

Z
zengyawen 已提交
310
```js
Y
YOUR_NAME 已提交
311 312 313 314 315 316
observer.on('cellularDataConnectionStateChange', {slotId: 0}, value =>{
    console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network);
});
```


C
clevercong 已提交
317
## observer.off('cellularDataConnectionStateChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
318

C
clevercong 已提交
319
off\(type: 'cellularDataConnectionStateChange',  callback?: Callback\<{ state: DataConnectState, network: RatType}\>\): void;
Y
YOUR_NAME 已提交
320 321 322 323 324 325 326 327 328 329 330 331 332 333

移除订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。

>**说明:**
>
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | 蜂窝数据链路连接状态事件                                     |
Z
zengyawen 已提交
334
| callback | Callback\<{ state: [DataConnectState](js-apis-telephony-data.md#dataconnectstate), network: [RatType](js-apis-radio.md#radiotechnology) }\> | 否   | 回调函数,参考data的[DataConnectState](js-apis-telephony-data.md#dataconnectstate),radio的[RadioTechnology](js-apis-radio.md#radiotechnology)。 |
Y
YOUR_NAME 已提交
335 336 337

**示例:**

Z
zengyawen 已提交
338
```js
Y
YOUR_NAME 已提交
339 340 341 342 343 344 345 346 347 348
let callback = value => {
    console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network);
}
observer.on('cellularDataConnectionStateChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
observer.off('cellularDataConnectionStateChange', callback);
observer.off('cellularDataConnectionStateChange');
```


C
clevercong 已提交
349
## observer.on('cellularDataFlowChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
350 351 352 353 354 355 356 357 358 359 360

on\(type: 'cellularDataFlowChange', callback: Callback\<DataFlowType\>\): void;

订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
361 362
| type     | string                                                       | 是   | 蜂窝数据业务的上下行数据流状态状态事件                       |
| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是   | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 |
Y
YOUR_NAME 已提交
363 364 365

**示例:**

Z
zengyawen 已提交
366
```js
Y
YOUR_NAME 已提交
367 368 369 370 371 372
observer.on('cellularDataFlowChange', data =>{
    console.log("on networkStateChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
373
## observer.on('cellularDataFlowChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
374 375 376 377 378 379 380 381 382 383 384

on\(type: 'cellularDataFlowChange', options: { slotId: number },  callback: Callback\<DataFlowType\>\): void;

订阅指定卡槽位的蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
385
| type     | string                                                       | 是   | 蜂窝数据业务的上下行数据流状态事件                           |
Y
YOUR_NAME 已提交
386
| slotId   | number                                                       | 是   | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2                       |
C
clevercong 已提交
387
| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是   | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 |
Y
YOUR_NAME 已提交
388 389 390

**示例:**

Z
zengyawen 已提交
391
```js
Y
YOUR_NAME 已提交
392 393 394 395 396 397
observer.on('cellularDataFlowChange', {slotId: 0}, data =>{
    console.log("on cellularDataFlowChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
398
## observer.off('cellularDataFlowChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
399 400 401 402 403 404 405 406 407 408 409 410 411 412 413

off\(type: 'cellularDataFlowChange', callback?: Callback\<DataFlowType\>\): void;

移除订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。

>**说明:**
>
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
414 415
| type     | string                                                       | 是   | 蜂窝数据业务的上下行数据流状态事件                           |
| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 否   | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 |
Y
YOUR_NAME 已提交
416 417 418

**示例:**

Z
zengyawen 已提交
419
```js
Y
YOUR_NAME 已提交
420 421 422 423 424 425 426 427 428 429
let callback = data => {
    console.log("on cellularDataFlowChange, data:" + JSON.stringify(data));
}
observer.on('cellularDataFlowChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
observer.off('cellularDataFlowChange', callback);
observer.off('cellularDataFlowChange');
```


C
clevercong 已提交
430
## observer.on('simStateChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446

on\(type: 'simStateChange', callback: Callback\<SimStateData\>\): void;

订阅sim状态更改事件,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | sim状态更改事件                                     |
| callback | Callback\<[SimStateData](#simstatedata7)\> | 是   | 回调函数。 |

**示例:**

Z
zengyawen 已提交
447
```js
Y
YOUR_NAME 已提交
448 449 450 451 452 453
observer.on('simStateChange', data =>{
    console.log("on simStateChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
454
## observer.on('simStateChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471

on\(type: 'simStateChange', options: { slotId: number }, callback: Callback\<SimStateData\>\): void;

订阅指定卡槽位的sim状态更改事件,使用callback方式作为异步方法。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | sim状态更改事件                                     |
| slotId   | number                                                       | 是   | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2                       |
| callback | Callback\<[SimStateData](#simstatedata7)\> | 是   | 回调函数。 |

**示例:**

Z
zengyawen 已提交
472
```js
Y
YOUR_NAME 已提交
473 474 475 476 477 478
observer.on('simStateChange', {slotId: 0}, data =>{
    console.log("on simStateChange, data:" + JSON.stringify(data));
});
```


C
clevercong 已提交
479
## observer.off('simStateChange')<sup>7+</sup>
Y
YOUR_NAME 已提交
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499

off\(type: 'simStateChange', callback?: Callback\<SimStateData\>\): void;

移除订阅sim状态更改事件,使用callback方式作为异步方法。

>**说明:**
>
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

**系统能力**:SystemCapability.Telephony.StateRegistry

**参数:**

| 参数名   | 类型                                                         | 必填 | 说明                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type     | string                                                       | 是   | sim状态更改事件                                             |
| callback | Callback\<[SimStateData](#simstatedata7)\> | 否   | 回调函数。 |

**示例:**

Z
zengyawen 已提交
500
```js
Y
YOUR_NAME 已提交
501 502 503 504 505 506 507 508 509 510 511 512 513 514
let callback = data => {
    console.log("on simStateChange, data:" + JSON.stringify(data));
}
observer.on('simStateChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
observer.off('simStateChange', callback);
observer.off('simStateChange');
```


## LockReason<sup>8+</sup>

SIM卡锁类型。

C
clevercong 已提交
515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531
**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.StateRegistry。

| 名称        | 值   | 说明              |
| ----------- | ---- | ----------------- |
| SIM_NONE    | 0    | 无锁。            |
| SIM_PIN     | 1    | PIN锁。           |
| SIM_PUK     | 2    | PUK锁。           |
| SIM_PN_PIN  | 3    | 网络PIN锁。       |
| SIM_PN_PUK  | 4    | 网络PUK锁。       |
| SIM_PU_PIN  | 5    | 子网PIN锁。       |
| SIM_PU_PUK  | 6    | 子网PUK锁。       |
| SIM_PP_PIN  | 7    | 服务提供商PIN锁。 |
| SIM_PP_PUK  | 8    | 服务提供商PUK锁。 |
| SIM_PC_PIN  | 9    | 组织PIN锁。       |
| SIM_PC_PUK  | 10   | 组织PUK锁。       |
| SIM_SIM_PIN | 11   | SIM PIN锁。       |
| SIM_SIM_PUK | 12   | SIM PUK锁。       |
Y
YOUR_NAME 已提交
532 533 534 535 536 537


## SimStateData<sup>7+</sup>

SIM卡类型和状态。

C
clevercong 已提交
538 539 540
**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.StateRegistry。

| 名称            | 类型                  | 说明                                                         |
Y
YOUR_NAME 已提交
541
| ----------------- | --------------------- | ------------------------------------------------------------ |
C
clevercong 已提交
542 543 544
| type  | [CardType](js-apis-sim.md#cardtype) | SIM卡类型,参考sim的[CardType](js-apis-sim.md#cardtype)。 |
| state | [SimState](js-apis-sim.md#simstate) | SIM卡状态,参考sim的[SimState](js-apis-sim.md#simstate)。 |
| reason<sup>8+</sup>       | [LockReason](#lockreason8) | SIM卡锁类型。 |
Y
YOUR_NAME 已提交
545