1# @ohos.telephony.observer (observer) 2 3本模块提供订阅管理功能,可以订阅/取消订阅的事件包括:网络状态变化、信号状态变化、通话状态变化、蜂窝数据链路连接状态、蜂窝数据业务的上下行数据流状态、SIM状态变化。 4 5>**说明:** 6> 7>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 导入模块 11 12``` 13import observer from '@ohos.telephony.observer'; 14``` 15 16## observer.on('networkStateChange') 17 18on\(type: \'networkStateChange\', callback: Callback<NetworkState\>\): void; 19 20订阅网络状态变化事件,使用callback方式作为异步方法。 21 22**需要权限**:ohos.permission.GET_NETWORK_INFO 23 24**系统能力**:SystemCapability.Telephony.StateRegistry 25 26**参数:** 27 28| 参数名 | 类型 | 必填 | 说明 | 29| -------- | --------------------------------------------------------- | ---- | ---------------------------------------------------------------- | 30| type | string | 是 | 网络状态变化事件,参数固定为'networkStateChange'。 | 31| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 是 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate)| 32 33**错误码:** 34 35以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 36 37| 错误码ID | 错误信息 | 38| -------- | -------------------------------------------- | 39| 201 | Permission denied. | 40| 401 | Parameter error. | 41| 8300001 | Invalid parameter value. | 42| 8300002 | Operation failed. Cannot connect to service. | 43| 8300003 | System internal error. | 44| 8300999 | Unknown error code. | 45 46**示例:** 47 48```js 49observer.on('networkStateChange', data => { 50 console.log("on networkStateChange, data:" + JSON.stringify(data)); 51}); 52``` 53 54 55## observer.on('networkStateChange') 56 57on\(type: \'networkStateChange\', options: { slotId: number }, callback: Callback<NetworkState\>\): void; 58 59订阅指定卡槽位的网络状态变化事件,使用callback方式作为异步方法。 60 61**需要权限**:ohos.permission.GET_NETWORK_INFO 62 63**系统能力**:SystemCapability.Telephony.StateRegistry 64 65**参数:** 66 67| 参数名 | 类型 | 必填 | 说明 | 68| -------- | --------------------------------------------------------- | ---- | ---------------------------------------------------------------- | 69| type | string | 是 | 网络状态变化事件,参数固定为'networkStateChange'。 | 70| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 71| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 是 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) | 72 73**错误码:** 74 75以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 76 77| 错误码ID | 错误信息 | 78| -------- | -------------------------------------------- | 79| 201 | Permission denied. | 80| 401 | Parameter error. | 81| 8300001 | Invalid parameter value. | 82| 8300002 | Operation failed. Cannot connect to service. | 83| 8300003 | System internal error. | 84| 8300999 | Unknown error code. | 85 86**示例:** 87 88```js 89observer.on('networkStateChange', {slotId: 0}, data => { 90 console.log("on networkStateChange, data:" + JSON.stringify(data)); 91}); 92``` 93 94 95## observer.off('networkStateChange') 96 97off\(type: \'networkStateChange\', callback?: Callback<NetworkState\>\): void; 98 99取消订阅网络状态变化事件,使用callback方式作为异步方法。 100 101>**说明:** 102> 103>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 104 105**系统能力**:SystemCapability.Telephony.StateRegistry 106 107**参数:** 108 109| 参数名 | 类型 | 必填 | 说明 | 110| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 111| type | string | 是 | 网络状态变化事件,参数固定为'networkStateChange'。 | 112| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 否 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) | 113 114| 错误码ID | 错误信息 | 115| -------- | -------------------------------------------- | 116| 401 | Parameter error. | 117| 8300001 | Invalid parameter value. | 118| 8300002 | Operation failed. Cannot connect to service. | 119| 8300003 | System internal error. | 120| 8300999 | Unknown error code. | 121 122**示例:** 123 124```js 125let callback = data => { 126 console.log("on networkStateChange, data:" + JSON.stringify(data)); 127} 128observer.on('networkStateChange', callback); 129// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 130observer.off('networkStateChange', callback); 131observer.off('networkStateChange'); 132``` 133 134## observer.on('signalInfoChange') 135 136on\(type: \'signalInfoChange\', callback: Callback<Array<SignalInformation\>\>): void; 137 138订阅信号状态变化事件,使用callback方式作为异步方法。 139 140**系统能力**:SystemCapability.Telephony.StateRegistry 141 142**参数:** 143 144| 参数名 | 类型 | 必填 | 说明 | 145| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 146| type | string | 是 | 信号状态变化事件,参数固定为'signalInfoChange'。 | 147| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 148 149**错误码:** 150 151以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 152 153| 错误码ID | 错误信息 | 154| -------- | -------------------------------------------- | 155| 201 | Permission denied. | 156| 401 | Parameter error. | 157| 8300001 | Invalid parameter value. | 158| 8300002 | Operation failed. Cannot connect to service. | 159| 8300003 | System internal error. | 160| 8300999 | Unknown error code. | 161 162**示例:** 163 164```js 165observer.on('signalInfoChange', data => { 166 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 167}); 168``` 169 170 171## observer.on('signalInfoChange') 172 173on\(type: \'signalInfoChange\', options: { slotId: number }, callback: Callback<Array<SignalInformation\>\>): void; 174 175订阅指定卡槽位的信号状态变化事件,使用callback方式作为异步方法。 176 177**系统能力**:SystemCapability.Telephony.StateRegistry 178 179**参数:** 180 181| 参数名 | 类型 | 必填 | 说明 | 182| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 183| type | string | 是 | 信号状态变化事件,参数固定为'signalInfoChange'。 | 184| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 185| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 186 187**错误码:** 188 189以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 190 191| 错误码ID | 错误信息 | 192| -------- | -------------------------------------------- | 193| 201 | Permission denied. | 194| 401 | Parameter error. | 195| 8300001 | Invalid parameter value. | 196| 8300002 | Operation failed. Cannot connect to service. | 197| 8300003 | System internal error. | 198| 8300999 | Unknown error code. | 199 200**示例:** 201 202```js 203observer.on('signalInfoChange', {slotId: 0}, data => { 204 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 205}); 206``` 207 208 209## observer.off('signalInfoChange') 210 211off\(type: \'signalInfoChange\', callback?: Callback<Array<SignalInformation\>\>): void; 212 213取消订阅信号状态变化事件,使用callback方式作为异步方法。 214 215>**说明:** 216> 217>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 218 219**系统能力**:SystemCapability.Telephony.StateRegistry 220 221**参数:** 222 223| 参数名 | 类型 | 必填 | 说明 | 224| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 225| type | string | 是 | 信号状态变化事件,参数固定为'signalInfoChange'。 | 226| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 否 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 227 228**错误码:** 229 230以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 231 232| 错误码ID | 错误信息 | 233| -------- | -------------------------------------------- | 234| 401 | Parameter error. | 235| 8300001 | Invalid parameter value. | 236| 8300002 | Operation failed. Cannot connect to service. | 237| 8300003 | System internal error. | 238| 8300999 | Unknown error code. | 239 240**示例:** 241 242```js 243let callback = data => { 244 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 245} 246observer.on('signalInfoChange', callback); 247// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 248observer.off('signalInfoChange', callback); 249observer.off('signalInfoChange'); 250``` 251 252## observer.on('cellInfoChange')<sup>8+</sup> 253 254on\(type: \'cellInfoChange\', callback: Callback<CellInformation\>\): void; 255 256订阅小区信息变化事件,使用callback方式作为异步方法。 257 258**系统接口:** 此接口为系统接口。 259 260**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 261 262**系统能力**:SystemCapability.Telephony.StateRegistry 263 264**参数:** 265 266| 参数名 | 类型 | 必填 | 说明 | 267| -------- | --------------------------------------------------------- | ---- |------------------------------------------------------------| 268| type | string | 是 | 小区信息变化事件,固定为'cellInfoChange'。 | 269| callback | Callback\<[CellInformation](js-apis-radio.md#cellinformation8)\> | 是 | 回调函数。| 270 271**错误码:** 272 273| 错误码ID | 错误信息 | 274| -------- | -------------------------------------------- | 275| 201 | Permission denied. | 276| 401 | Parameter error. | 277| 8300001 | Invalid parameter value. | 278| 8300002 | Operation failed. Cannot connect to service. | 279| 8300003 | System internal error. | 280| 8300999 | Unknown error code. | 281 282**示例:** 283 284```js 285observer.on('cellInfoChange', data => { 286 console.log("on cellInfoChange, data:" + JSON.stringify(data)); 287}); 288``` 289 290 291## observer.on('cellInfoChange')<sup>8+</sup> 292 293on\(type: \'cellInfoChange\', options: { slotId: number }, callback: Callback<CellInformation\>\): void; 294 295订阅指定卡槽位的小区信息变化事件,使用callback方式作为异步方法。 296 297**系统接口:** 此接口为系统接口。 298 299**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 300 301**系统能力**:SystemCapability.Telephony.StateRegistry 302 303**参数:** 304 305| 参数名 | 类型 | 必填 | 说明 | 306| ------ |--------------------------------------------------| ---- |------------------------------------------------------------| 307| type | string | 是 | 小区信息变化事件,固定为'cellInfoChange'。 | 308| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 309| callback | Callback\<[CellInformation](js-apis-radio.md#cellinformation8)\> | 是 | 回调函数。| 310 311**错误码:** 312 313| 错误码ID | 错误信息 | 314| -------- | -------------------------------------------- | 315| 201 | Permission denied. | 316| 401 | Parameter error. | 317| 8300001 | Invalid parameter value. | 318| 8300002 | Operation failed. Cannot connect to service. | 319| 8300003 | System internal error. | 320| 8300999 | Unknown error code. | 321 322**示例:** 323 324```js 325observer.on('cellInfoChange', {slotId: 0}, data => { 326 console.log("on cellInfoChange, data:" + JSON.stringify(data)); 327}); 328``` 329 330 331## observer.off('cellInfoChange')<sup>8+</sup> 332 333off\(type: \'cellInfoChange\', callback?: Callback<CellInformation\>\): void; 334 335取消订阅小区信息变化事件,使用callback方式作为异步方法。 336 337>**说明:** 338> 339>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 340 341**系统接口:** 此接口为系统接口。 342 343**系统能力**:SystemCapability.Telephony.StateRegistry 344 345**参数:** 346 347| 参数名 | 类型 | 必填 | 说明 | 348| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 349| type | string | 是 | 小区信息变化事件,固定为'cellInfoChange'。 | 350| callback | Callback\<[CellInformation](js-apis-radio.md#cellinformation8)\> | 否 | 回调函数。| 351 352| 错误码ID | 错误信息 | 353| -------- | -------------------------------------------- | 354| 401 | Parameter error. | 355| 8300001 | Invalid parameter value. | 356| 8300002 | Operation failed. Cannot connect to service. | 357| 8300003 | System internal error. | 358| 8300999 | Unknown error code. | 359 360**示例:** 361 362```js 363let callback = data => { 364 console.log("on cellInfoChange, data:" + JSON.stringify(data)); 365} 366observer.on('cellInfoChange', callback); 367// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 368observer.off('cellInfoChange', callback); 369observer.off('cellInfoChange'); 370``` 371 372## observer.on('callStateChange') 373 374on(type: 'callStateChange', callback: Callback\<{ state: CallState, number: string }\>): void; 375 376订阅通话状态变化事件,使用callback方式作为异步方法。 377 378**系统能力**:SystemCapability.Telephony.StateRegistry 379 380**参数:** 381 382| 参数名 | 类型 | 必填 | 说明 | 383| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 384| type | string | 是 | 通话状态变化事件,参数固定为'callStateChange'。 | 385| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 386 387**错误码:** 388 389以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 390 391| 错误码ID | 错误信息 | 392| -------- | -------------------------------------------- | 393| 401 | Parameter error. | 394| 8300001 | Invalid parameter value. | 395| 8300002 | Operation failed. Cannot connect to service. | 396| 8300003 | System internal error. | 397| 8300999 | Unknown error code. | 398 399**示例:** 400 401```js 402observer.on('callStateChange', value => { 403 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 404}); 405``` 406 407 408## observer.on('callStateChange') 409 410on(type: 'callStateChange', options: { slotId: number }, callback: Callback<{ state:CallState, number: string }>): void; 411 412订阅通话状态变化事件,使用callback方式作为异步方法。 413 414**系统能力**:SystemCapability.Telephony.StateRegistry 415 416**参数:** 417 418| 参数名 | 类型 | 必填 | 说明 | 419| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 420| type | string | 是 | 通话状态变化事件,参数固定为'callStateChange'。 | 421| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 422| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 423 424**错误码:** 425 426以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 427 428| 错误码ID | 错误信息 | 429| -------- | -------------------------------------------- | 430| 401 | Parameter error. | 431| 8300001 | Invalid parameter value. | 432| 8300002 | Operation failed. Cannot connect to service. | 433| 8300003 | System internal error. | 434| 8300999 | Unknown error code. | 435 436**示例:** 437 438```js 439observer.on('callStateChange', {slotId: 0}, value => { 440 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 441}); 442``` 443 444 445## observer.off('callStateChange') 446 447off(type: 'callStateChange', callback?: Callback<{ state: CallState, number: string }>): void; 448 449取消订阅通话状态变化事件,使用callback方式作为异步方法。 450 451>**说明:** 452> 453>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 454 455**系统能力**:SystemCapability.Telephony.StateRegistry 456 457**参数:** 458 459| 参数名 | 类型 | 必填 | 说明 | 460| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 461| type | string | 是 | 通话状态变化事件,参数固定为'callStateChange'。 | 462| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 否 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 463 464**错误码:** 465 466以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 467 468| 错误码ID | 错误信息 | 469| -------- | -------------------------------------------- | 470| 401 | Parameter error. | 471| 8300001 | Invalid parameter value. | 472| 8300002 | Operation failed. Cannot connect to service. | 473| 8300003 | System internal error. | 474| 8300999 | Unknown error code. | 475 476**示例:** 477 478```js 479let callback = value => { 480 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 481} 482observer.on('callStateChange', callback); 483// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 484observer.off('callStateChange', callback); 485observer.off('callStateChange'); 486``` 487 488 489## observer.on('cellularDataConnectionStateChange')<sup>7+</sup> 490 491on\(type: 'cellularDataConnectionStateChange', callback: Callback\<{ state: DataConnectState, network: RatType}\>\): void; 492 493订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。 494 495**系统能力**:SystemCapability.Telephony.StateRegistry 496 497**参数:** 498 499| 参数名 | 类型 | 必填 | 说明 | 500| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 501| type | string | 是 | 蜂窝数据链路连接状态事件,参数固定为'cellularDataConnectionStateChange'。| 502| 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)。 | 503 504**错误码:** 505 506以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 507 508| 错误码ID | 错误信息 | 509| -------- | -------------------------------------------- | 510| 401 | Parameter error. | 511| 8300001 | Invalid parameter value. | 512| 8300002 | Operation failed. Cannot connect to service. | 513| 8300003 | System internal error. | 514| 8300999 | Unknown error code. | 515 516**示例:** 517 518```js 519observer.on('cellularDataConnectionStateChange', value => { 520 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 521}); 522``` 523 524 525## observer.on('cellularDataConnectionStateChange')<sup>7+</sup> 526 527on\(type: 'cellularDataConnectionStateChange', options: { slotId: number }, callback: Callback\<{ state: DataConnectState, network: RatType }\>\): void; 528 529订阅指定卡槽位的蜂窝数据链路连接状态,使用callback方式作为异步方法。 530 531**系统能力**:SystemCapability.Telephony.StateRegistry 532 533**参数:** 534 535| 参数名 | 类型 | 必填 | 说明 | 536| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 537| type | string | 是 | 蜂窝数据链路连接状态事件,参数固定为'cellularDataConnectionStateChange'。| 538| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 539| 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)。 | 540 541**错误码:** 542 543以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 544 545| 错误码ID | 错误信息 | 546| -------- | -------------------------------------------- | 547| 401 | Parameter error. | 548| 8300001 | Invalid parameter value. | 549| 8300002 | Operation failed. Cannot connect to service. | 550| 8300003 | System internal error. | 551| 8300999 | Unknown error code. | 552 553**示例:** 554 555```js 556observer.on('cellularDataConnectionStateChange', {slotId: 0}, value => { 557 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 558}); 559``` 560 561 562## observer.off('cellularDataConnectionStateChange')<sup>7+</sup> 563 564off\(type: 'cellularDataConnectionStateChange', callback?: Callback\<{ state: DataConnectState, network: RatType}\>\): void; 565 566移除订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。 567 568>**说明:** 569> 570>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 571 572**系统能力**:SystemCapability.Telephony.StateRegistry 573 574**参数:** 575 576| 参数名 | 类型 | 必填 | 说明 | 577| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 578| type | string | 是 | 蜂窝数据链路连接状态事件,参数固定为'cellularDataConnectionStateChange'。| 579| 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)。 | 580 581**错误码:** 582 583以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 584 585| 错误码ID | 错误信息 | 586| -------- | -------------------------------------------- | 587| 401 | Parameter error. | 588| 8300001 | Invalid parameter value. | 589| 8300002 | Operation failed. Cannot connect to service. | 590| 8300003 | System internal error. | 591| 8300999 | Unknown error code. | 592 593**示例:** 594 595```js 596let callback = value => { 597 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 598} 599observer.on('cellularDataConnectionStateChange', callback); 600// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 601observer.off('cellularDataConnectionStateChange', callback); 602observer.off('cellularDataConnectionStateChange'); 603``` 604 605 606## observer.on('cellularDataFlowChange')<sup>7+</sup> 607 608on\(type: 'cellularDataFlowChange', callback: Callback\<DataFlowType\>\): void; 609 610订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 611 612**系统能力**:SystemCapability.Telephony.StateRegistry 613 614**参数:** 615 616| 参数名 | 类型 | 必填 | 说明 | 617| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 618| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件,参数固定为'cellularDataFlowChange'。 | 619| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 620 621**错误码:** 622 623以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 624 625| 错误码ID | 错误信息 | 626| -------- | -------------------------------------------- | 627| 401 | Parameter error. | 628| 8300001 | Invalid parameter value. | 629| 8300002 | Operation failed. Cannot connect to service. | 630| 8300003 | System internal error. | 631| 8300999 | Unknown error code. | 632 633**示例:** 634 635```js 636observer.on('cellularDataFlowChange', data => { 637 console.log("on networkStateChange, data:" + JSON.stringify(data)); 638}); 639``` 640 641 642## observer.on('cellularDataFlowChange')<sup>7+</sup> 643 644on\(type: 'cellularDataFlowChange', options: { slotId: number }, callback: Callback\<DataFlowType\>\): void; 645 646订阅指定卡槽位的蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 647 648**系统能力**:SystemCapability.Telephony.StateRegistry 649 650**参数:** 651 652| 参数名 | 类型 | 必填 | 说明 | 653| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 654| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件,参数固定为'cellularDataFlowChange'。 | 655| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 656| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 657 658**错误码:** 659 660以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 661 662| 错误码ID | 错误信息 | 663| -------- | -------------------------------------------- | 664| 401 | Parameter error. | 665| 8300001 | Invalid parameter value. | 666| 8300002 | Operation failed. Cannot connect to service. | 667| 8300003 | System internal error. | 668| 8300999 | Unknown error code. | 669 670**示例:** 671 672```js 673observer.on('cellularDataFlowChange', {slotId: 0}, data => { 674 console.log("on cellularDataFlowChange, data:" + JSON.stringify(data)); 675}); 676``` 677 678 679## observer.off('cellularDataFlowChange')<sup>7+</sup> 680 681off\(type: 'cellularDataFlowChange', callback?: Callback\<DataFlowType\>\): void; 682 683移除订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 684 685>**说明:** 686> 687>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 688 689**系统能力**:SystemCapability.Telephony.StateRegistry 690 691**参数:** 692 693| 参数名 | 类型 | 必填 | 说明 | 694| -------- | ------------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 695| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件,参数固定为'cellularDataFlowChange'。 | 696| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 否 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 697 698**错误码:** 699 700以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 701 702| 错误码ID | 错误信息 | 703| -------- | -------------------------------------------- | 704| 401 | Parameter error. | 705| 8300001 | Invalid parameter value. | 706| 8300002 | Operation failed. Cannot connect to service. | 707| 8300003 | System internal error. | 708| 8300999 | Unknown error code. | 709 710**示例:** 711 712```js 713let callback = data => { 714 console.log("on cellularDataFlowChange, data:" + JSON.stringify(data)); 715} 716observer.on('cellularDataFlowChange', callback); 717// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 718observer.off('cellularDataFlowChange', callback); 719observer.off('cellularDataFlowChange'); 720``` 721 722 723## observer.on('simStateChange')<sup>7+</sup> 724 725on\(type: 'simStateChange', callback: Callback\<SimStateData\>\): void; 726 727订阅sim状态更改事件,使用callback方式作为异步方法。 728 729**系统能力**:SystemCapability.Telephony.StateRegistry 730 731**参数:** 732 733| 参数名 | 类型 | 必填 | 说明 | 734| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 735| type | string | 是 | sim状态更改事件,参数固定为'simStateChange'。 | 736| callback | Callback\<[SimStateData](#simstatedata7)\> | 是 | 回调函数。 | 737 738**错误码:** 739 740以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 741 742| 错误码ID | 错误信息 | 743| -------- | -------------------------------------------- | 744| 401 | Parameter error. | 745| 8300001 | Invalid parameter value. | 746| 8300002 | Operation failed. Cannot connect to service. | 747| 8300003 | System internal error. | 748| 8300999 | Unknown error code. | 749 750**示例:** 751 752```js 753observer.on('simStateChange', data => { 754 console.log("on simStateChange, data:" + JSON.stringify(data)); 755}); 756``` 757 758 759## observer.on('simStateChange')<sup>7+</sup> 760 761on\(type: 'simStateChange', options: { slotId: number }, callback: Callback\<SimStateData\>\): void; 762 763订阅指定卡槽位的sim状态更改事件,使用callback方式作为异步方法。 764 765**系统能力**:SystemCapability.Telephony.StateRegistry 766 767**参数:** 768 769| 参数名 | 类型 | 必填 | 说明 | 770| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 771| type | string | 是 | sim状态更改事件,参数固定为'simStateChange'。 | 772| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 773| callback | Callback\<[SimStateData](#simstatedata7)\> | 是 | 回调函数。 | 774 775**错误码:** 776 777以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 778 779| 错误码ID | 错误信息 | 780| -------- | -------------------------------------------- | 781| 401 | Parameter error. | 782| 8300001 | Invalid parameter value. | 783| 8300002 | Operation failed. Cannot connect to service. | 784| 8300003 | System internal error. | 785| 8300999 | Unknown error code. | 786 787**示例:** 788 789```js 790observer.on('simStateChange', {slotId: 0}, data => { 791 console.log("on simStateChange, data:" + JSON.stringify(data)); 792}); 793``` 794 795 796## observer.off('simStateChange')<sup>7+</sup> 797 798off\(type: 'simStateChange', callback?: Callback\<SimStateData\>\): void; 799 800移除订阅sim状态更改事件,使用callback方式作为异步方法。 801 802>**说明:** 803> 804>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 805 806**系统能力**:SystemCapability.Telephony.StateRegistry 807 808**参数:** 809 810| 参数名 | 类型 | 必填 | 说明 | 811| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 812| type | string | 是 | sim状态更改事件,参数固定为'simStateChange'。 | 813| callback | Callback\<[SimStateData](#simstatedata7)\> | 否 | 回调函数。 | 814 815**错误码:** 816 817以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 818 819| 错误码ID | 错误信息 | 820| -------- | -------------------------------------------- | 821| 401 | Parameter error. | 822| 8300001 | Invalid parameter value. | 823| 8300002 | Operation failed. Cannot connect to service. | 824| 8300003 | System internal error. | 825| 8300999 | Unknown error code. | 826 827**示例:** 828 829```js 830let callback = data => { 831 console.log("on simStateChange, data:" + JSON.stringify(data)); 832} 833observer.on('simStateChange', callback); 834// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 835observer.off('simStateChange', callback); 836observer.off('simStateChange'); 837``` 838 839 840## LockReason<sup>8+</sup> 841 842SIM卡锁类型。 843 844**系统能力**:SystemCapability.Telephony.StateRegistry 845 846| 名称 | 值 | 说明 | 847| ----------- | ---- | ----------------- | 848| SIM_NONE | 0 | 无锁。 | 849| SIM_PIN | 1 | PIN锁。 | 850| SIM_PUK | 2 | PUK锁。 | 851| SIM_PN_PIN | 3 | 网络PIN锁。 | 852| SIM_PN_PUK | 4 | 网络PUK锁。 | 853| SIM_PU_PIN | 5 | 子网PIN锁。 | 854| SIM_PU_PUK | 6 | 子网PUK锁。 | 855| SIM_PP_PIN | 7 | 服务提供商PIN锁。 | 856| SIM_PP_PUK | 8 | 服务提供商PUK锁。 | 857| SIM_PC_PIN | 9 | 组织PIN锁。 | 858| SIM_PC_PUK | 10 | 组织PUK锁。 | 859| SIM_SIM_PIN | 11 | SIM PIN锁。 | 860| SIM_SIM_PUK | 12 | SIM PUK锁。 | 861 862 863## SimStateData<sup>7+</sup> 864 865SIM卡类型和状态。 866 867**系统能力**:SystemCapability.Telephony.StateRegistry 868 869| 名称 | 类型 | 必填 | 说明 | 870| ------------------- | ----------------------------------- | ---- | -------------------------------------------------------- | 871| type | [CardType](js-apis-sim.md#cardtype7) | 是 | SIM卡类型。 | 872| state | [SimState](js-apis-sim.md#simstate) | 是 | SIM卡状态。 | 873| reason<sup>8+</sup> | [LockReason](#lockreason8) | 是 | SIM卡锁类型。 | 874