1# @ohos.telephony.observer (observer) 2 3本模块提供订阅管理功能,可以订阅/取消订阅的事件包括:网络状态变化、信号状态变化、通话状态变化、蜂窝数据链路连接状态、蜂窝数据业务的上下行数据流状态、SIM状态变化。 4 5>**说明:** 6> 7>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 导入模块 11 12```ts 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```ts 49observer.on('networkStateChange', (data: observer.NetworkState) => { 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```ts 89class SlotId { 90 slotId: number = 0 91} 92let id: SlotId = {slotId: 0} 93observer.on('networkStateChange', id, (data: observer.NetworkState) => { 94 console.log("on networkStateChange, data:" + JSON.stringify(data)); 95}); 96``` 97 98 99## observer.off('networkStateChange') 100 101off\(type: \'networkStateChange\', callback?: Callback\<NetworkState\>\): void; 102 103取消订阅网络状态变化事件,使用callback方式作为异步方法。 104 105>**说明:** 106> 107>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 108 109**系统能力**:SystemCapability.Telephony.StateRegistry 110 111**参数:** 112 113| 参数名 | 类型 | 必填 | 说明 | 114| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 115| type | string | 是 | 网络状态变化事件,参数固定为'networkStateChange'。 | 116| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 否 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) | 117 118**错误码:** 119 120以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 121 122| 错误码ID | 错误信息 | 123| -------- | -------------------------------------------- | 124| 401 | Parameter error. | 125| 8300001 | Invalid parameter value. | 126| 8300002 | Operation failed. Cannot connect to service. | 127| 8300003 | System internal error. | 128| 8300999 | Unknown error code. | 129 130**示例:** 131 132```ts 133let callback: (data: observer.NetworkState) => void = (data: observer.NetworkState) => { 134 console.log("on networkStateChange, data:" + JSON.stringify(data)); 135} 136observer.on('networkStateChange', callback); 137// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 138observer.off('networkStateChange', callback); 139observer.off('networkStateChange'); 140``` 141 142## observer.on('signalInfoChange') 143 144on\(type: \'signalInfoChange\', callback: Callback\<Array\<SignalInformation\>\>): void; 145 146订阅信号状态变化事件,使用callback方式作为异步方法。 147 148**系统能力**:SystemCapability.Telephony.StateRegistry 149 150**参数:** 151 152| 参数名 | 类型 | 必填 | 说明 | 153| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 154| type | string | 是 | 信号状态变化事件,参数固定为'signalInfoChange'。 | 155| callback | Callback\<Array\<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 156 157**错误码:** 158 159以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 160 161| 错误码ID | 错误信息 | 162| -------- | -------------------------------------------- | 163| 401 | Parameter error. | 164| 8300001 | Invalid parameter value. | 165| 8300002 | Operation failed. Cannot connect to service. | 166| 8300003 | System internal error. | 167| 8300999 | Unknown error code. | 168 169**示例:** 170 171```ts 172import radio from '@ohos.telephony.radio'; 173 174observer.on('signalInfoChange', (data: Array<radio.SignalInformation>) => { 175 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 176}); 177``` 178 179 180## observer.on('signalInfoChange') 181 182on\(type: \'signalInfoChange\', options: { slotId: number }, callback: Callback\<Array\<SignalInformation\>\>): void; 183 184订阅指定卡槽位的信号状态变化事件,使用callback方式作为异步方法。 185 186**系统能力**:SystemCapability.Telephony.StateRegistry 187 188**参数:** 189 190| 参数名 | 类型 | 必填 | 说明 | 191| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 192| type | string | 是 | 信号状态变化事件,参数固定为'signalInfoChange'。 | 193| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 194| callback | Callback\<Array\<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 195 196**错误码:** 197 198以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 199 200| 错误码ID | 错误信息 | 201| -------- | -------------------------------------------- | 202| 401 | Parameter error. | 203| 8300001 | Invalid parameter value. | 204| 8300002 | Operation failed. Cannot connect to service. | 205| 8300003 | System internal error. | 206| 8300999 | Unknown error code. | 207 208**示例:** 209 210```ts 211import radio from '@ohos.telephony.radio'; 212 213class SlotId { 214 slotId: number = 0 215} 216let id: SlotId = {slotId: 0} 217observer.on('signalInfoChange', id, (data: Array<radio.SignalInformation>) => { 218 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 219}); 220``` 221 222 223## observer.off('signalInfoChange') 224 225off\(type: \'signalInfoChange\', callback?: Callback\<Array\<SignalInformation\>\>): void; 226 227取消订阅信号状态变化事件,使用callback方式作为异步方法。 228 229>**说明:** 230> 231>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 232 233**系统能力**:SystemCapability.Telephony.StateRegistry 234 235**参数:** 236 237| 参数名 | 类型 | 必填 | 说明 | 238| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 239| type | string | 是 | 信号状态变化事件,参数固定为'signalInfoChange'。 | 240| callback | Callback\<Array\<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 否 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 241 242**错误码:** 243 244以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 245 246| 错误码ID | 错误信息 | 247| -------- | -------------------------------------------- | 248| 401 | Parameter error. | 249| 8300001 | Invalid parameter value. | 250| 8300002 | Operation failed. Cannot connect to service. | 251| 8300003 | System internal error. | 252| 8300999 | Unknown error code. | 253 254**示例:** 255 256```ts 257import radio from '@ohos.telephony.radio'; 258 259let callback: (data: Array<radio.SignalInformation>) => void = (data: Array<radio.SignalInformation>) => { 260 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 261} 262observer.on('signalInfoChange', callback); 263// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 264observer.off('signalInfoChange', callback); 265observer.off('signalInfoChange'); 266``` 267 268## observer.on('cellInfoChange')<sup>8+</sup> 269 270on\(type: \'cellInfoChange\', callback: Callback\<Array\<CellInformation\>\>\): void; 271 272订阅小区信息变化事件,使用callback方式作为异步方法。 273 274**系统接口:** 此接口为系统接口。 275 276**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 277 278**系统能力**:SystemCapability.Telephony.StateRegistry 279 280**参数:** 281 282| 参数名 | 类型 | 必填 | 说明 | 283| -------- | --------------------------------------------------------- | ---- |------------------------------------------| 284| type | string | 是 | 小区信息变化事件,固定为'cellInfoChange'。 | 285| callback | Callback\<Array\<[CellInformation](js-apis-radio.md#cellinformation8)\>\> | 是 | 回调函数。 | 286 287**错误码:** 288 289以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 290 291| 错误码ID | 错误信息 | 292| -------- | -------------------------------------------- | 293| 201 | Permission denied. | 294| 202 | Non-system applications use system APIs. | 295| 401 | Parameter error. | 296| 8300001 | Invalid parameter value. | 297| 8300002 | Operation failed. Cannot connect to service. | 298| 8300003 | System internal error. | 299| 8300999 | Unknown error code. | 300 301**示例:** 302 303```ts 304import radio from '@ohos.telephony.radio'; 305 306observer.on('cellInfoChange', (data: Array<radio.CellInformation>) => { 307 console.log("on cellInfoChange, data:" + JSON.stringify(data)); 308}); 309``` 310 311 312## observer.on('cellInfoChange')<sup>8+</sup> 313 314on\(type: \'cellInfoChange\', options: { slotId: number }, callback: Callback\<Array\<CellInformation\>\>\): void; 315 316订阅指定卡槽位的小区信息变化事件,使用callback方式作为异步方法。 317 318**系统接口:** 此接口为系统接口。 319 320**需要权限**:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 321 322**系统能力**:SystemCapability.Telephony.StateRegistry 323 324**参数:** 325 326| 参数名 | 类型 | 必填 | 说明 | 327| ------ |--------------------------------------------------| ---- |--------------------------------------------| 328| type | string | 是 | 小区信息变化事件,固定为'cellInfoChange'。 | 329| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 330| callback | Callback\<Array\<[CellInformation](js-apis-radio.md#cellinformation8)\>\> | 是 | 回调函数。 | 331 332**错误码:** 333 334以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 335 336| 错误码ID | 错误信息 | 337| -------- | -------------------------------------------- | 338| 201 | Permission denied. | 339| 202 | Non-system applications use system APIs. | 340| 401 | Parameter error. | 341| 8300001 | Invalid parameter value. | 342| 8300002 | Operation failed. Cannot connect to service. | 343| 8300003 | System internal error. | 344| 8300999 | Unknown error code. | 345 346**示例:** 347 348```ts 349import radio from '@ohos.telephony.radio'; 350 351class SlotId { 352 slotId: number = 0 353} 354let id: SlotId = {slotId: 0} 355observer.on('cellInfoChange', id, (data: Array<radio.CellInformation>) => { 356 console.log("on cellInfoChange, data:" + JSON.stringify(data)); 357}); 358``` 359 360 361## observer.off('cellInfoChange')<sup>8+</sup> 362 363off\(type: \'cellInfoChange\', callback?: Callback\<Array\<CellInformation\>\>\): void; 364 365取消订阅小区信息变化事件,使用callback方式作为异步方法。 366 367>**说明:** 368> 369>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 370 371**系统接口:** 此接口为系统接口。 372 373**系统能力**:SystemCapability.Telephony.StateRegistry 374 375**参数:** 376 377| 参数名 | 类型 | 必填 | 说明 | 378| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 379| type | string | 是 | 小区信息变化事件,固定为'cellInfoChange'。 | 380| callback | Callback\<Array\<[CellInformation](js-apis-radio.md#cellinformation8)\>\> | 否 | 回调函数。| 381 382**错误码:** 383 384以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 385 386| 错误码ID | 错误信息 | 387| -------- | -------------------------------------------- | 388| 202 | Non-system applications use system APIs. | 389| 401 | Parameter error. | 390| 8300001 | Invalid parameter value. | 391| 8300002 | Operation failed. Cannot connect to service. | 392| 8300003 | System internal error. | 393| 8300999 | Unknown error code. | 394 395**示例:** 396 397```ts 398import radio from '@ohos.telephony.radio'; 399 400let callback: (data: Array<radio.CellInformation>) => void = (data: Array<radio.CellInformation>) => { 401 console.log("on cellInfoChange, data:" + JSON.stringify(data)); 402} 403observer.on('cellInfoChange', callback); 404// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 405observer.off('cellInfoChange', callback); 406observer.off('cellInfoChange'); 407``` 408 409## observer.on('callStateChange') 410 411on(type: 'callStateChange', callback: Callback\<{ state: CallState, number: string }\>): void; 412 413订阅通话状态变化事件,使用callback方式作为异步方法。 414 415**系统能力**:SystemCapability.Telephony.StateRegistry 416 417**参数:** 418 419| 参数名 | 类型 | 必填 | 说明 | 420| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 421| type | string | 是 | 通话状态变化事件,参数固定为'callStateChange'。 | 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```ts 439import call from '@ohos.telephony.call'; 440 441class Value { 442 state: call.CallState = call.CallState.CALL_STATE_UNKNOWN 443 number: string = "" 444} 445observer.on('callStateChange', (value: Value) => { 446 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 447}); 448``` 449 450 451## observer.on('callStateChange') 452 453on(type: 'callStateChange', options: { slotId: number }, callback: Callback<{ state:CallState, number: string }>): void; 454 455订阅通话状态变化事件,使用callback方式作为异步方法。 456 457**系统能力**:SystemCapability.Telephony.StateRegistry 458 459**参数:** 460 461| 参数名 | 类型 | 必填 | 说明 | 462| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 463| type | string | 是 | 通话状态变化事件,参数固定为'callStateChange'。 | 464| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 465| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 466 467**错误码:** 468 469以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 470 471| 错误码ID | 错误信息 | 472| -------- | -------------------------------------------- | 473| 401 | Parameter error. | 474| 8300001 | Invalid parameter value. | 475| 8300002 | Operation failed. Cannot connect to service. | 476| 8300003 | System internal error. | 477| 8300999 | Unknown error code. | 478 479**示例:** 480 481```ts 482import call from '@ohos.telephony.call'; 483 484class Value { 485 state: call.CallState = call.CallState.CALL_STATE_UNKNOWN 486 number: string = "" 487} 488class SlotId { 489 slotId: number = 0 490} 491let id: SlotId = {slotId: 0} 492observer.on('callStateChange', id, (value: Value) => { 493 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 494}); 495``` 496 497 498## observer.off('callStateChange') 499 500off(type: 'callStateChange', callback?: Callback<{ state: CallState, number: string }>): void; 501 502取消订阅通话状态变化事件,使用callback方式作为异步方法。 503 504>**说明:** 505> 506>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 507 508**系统能力**:SystemCapability.Telephony.StateRegistry 509 510**参数:** 511 512| 参数名 | 类型 | 必填 | 说明 | 513| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 514| type | string | 是 | 通话状态变化事件,参数固定为'callStateChange'。 | 515| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 否 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 516 517**错误码:** 518 519以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 520 521| 错误码ID | 错误信息 | 522| -------- | -------------------------------------------- | 523| 401 | Parameter error. | 524| 8300001 | Invalid parameter value. | 525| 8300002 | Operation failed. Cannot connect to service. | 526| 8300003 | System internal error. | 527| 8300999 | Unknown error code. | 528 529**示例:** 530 531```ts 532import call from '@ohos.telephony.call'; 533 534class Value { 535 state: call.CallState = call.CallState.CALL_STATE_UNKNOWN 536 number: string = "" 537} 538let callback: (value: Value) => void = (value: Value) => { 539 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 540} 541observer.on('callStateChange', callback); 542// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 543observer.off('callStateChange', callback); 544observer.off('callStateChange'); 545``` 546 547 548## observer.on('cellularDataConnectionStateChange')<sup>7+</sup> 549 550on\(type: 'cellularDataConnectionStateChange', callback: Callback\<{ state: DataConnectState, network: RatType}\>\): void; 551 552订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。 553 554**系统能力**:SystemCapability.Telephony.StateRegistry 555 556**参数:** 557 558| 参数名 | 类型 | 必填 | 说明 | 559| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 560| type | string | 是 | 蜂窝数据链路连接状态事件,参数固定为'cellularDataConnectionStateChange'。| 561| 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)。 | 562 563**错误码:** 564 565以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 566 567| 错误码ID | 错误信息 | 568| -------- | -------------------------------------------- | 569| 401 | Parameter error. | 570| 8300001 | Invalid parameter value. | 571| 8300002 | Operation failed. Cannot connect to service. | 572| 8300003 | System internal error. | 573| 8300999 | Unknown error code. | 574 575**示例:** 576 577```ts 578import data from '@ohos.telephony.data'; 579import radio from '@ohos.telephony.radio'; 580 581class Value { 582 state: data.DataConnectState = data.DataConnectState.DATA_STATE_UNKNOWN 583 network: radio.RadioTechnology = radio.RadioTechnology.RADIO_TECHNOLOGY_UNKNOWN 584} 585observer.on('cellularDataConnectionStateChange', (value: Value) => { 586 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 587}); 588``` 589 590 591## observer.on('cellularDataConnectionStateChange')<sup>7+</sup> 592 593on\(type: 'cellularDataConnectionStateChange', options: { slotId: number }, callback: Callback\<{ state: DataConnectState, network: RatType }\>\): void; 594 595订阅指定卡槽位的蜂窝数据链路连接状态,使用callback方式作为异步方法。 596 597**系统能力**:SystemCapability.Telephony.StateRegistry 598 599**参数:** 600 601| 参数名 | 类型 | 必填 | 说明 | 602| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 603| type | string | 是 | 蜂窝数据链路连接状态事件,参数固定为'cellularDataConnectionStateChange'。| 604| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 605| 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)。 | 606 607**错误码:** 608 609以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 610 611| 错误码ID | 错误信息 | 612| -------- | -------------------------------------------- | 613| 401 | Parameter error. | 614| 8300001 | Invalid parameter value. | 615| 8300002 | Operation failed. Cannot connect to service. | 616| 8300003 | System internal error. | 617| 8300999 | Unknown error code. | 618 619**示例:** 620 621```ts 622import data from '@ohos.telephony.data'; 623import radio from '@ohos.telephony.radio'; 624 625class Value { 626 state: data.DataConnectState = data.DataConnectState.DATA_STATE_UNKNOWN 627 network: radio.RadioTechnology = radio.RadioTechnology.RADIO_TECHNOLOGY_UNKNOWN 628} 629class SlotId { 630 slotId: number = 0 631} 632let id: SlotId = {slotId: 0} 633observer.on('cellularDataConnectionStateChange', id, (value: Value) => { 634 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 635}); 636``` 637 638 639## observer.off('cellularDataConnectionStateChange')<sup>7+</sup> 640 641off\(type: 'cellularDataConnectionStateChange', callback?: Callback\<{ state: DataConnectState, network: RatType}\>\): void; 642 643移除订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。 644 645>**说明:** 646> 647>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 648 649**系统能力**:SystemCapability.Telephony.StateRegistry 650 651**参数:** 652 653| 参数名 | 类型 | 必填 | 说明 | 654| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 655| type | string | 是 | 蜂窝数据链路连接状态事件,参数固定为'cellularDataConnectionStateChange'。| 656| 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)。 | 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```ts 673import data from '@ohos.telephony.data'; 674import radio from '@ohos.telephony.radio'; 675 676class Value { 677 state: data.DataConnectState = data.DataConnectState.DATA_STATE_UNKNOWN 678 network: radio.RadioTechnology = radio.RadioTechnology.RADIO_TECHNOLOGY_UNKNOWN 679} 680let callback: (value: Value) => void = (value: Value) => { 681 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 682} 683observer.on('cellularDataConnectionStateChange', callback); 684// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 685observer.off('cellularDataConnectionStateChange', callback); 686observer.off('cellularDataConnectionStateChange'); 687``` 688 689 690## observer.on('cellularDataFlowChange')<sup>7+</sup> 691 692on\(type: 'cellularDataFlowChange', callback: Callback\<DataFlowType\>\): void; 693 694订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 695 696**系统能力**:SystemCapability.Telephony.StateRegistry 697 698**参数:** 699 700| 参数名 | 类型 | 必填 | 说明 | 701| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 702| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件,参数固定为'cellularDataFlowChange'。 | 703| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 704 705**错误码:** 706 707以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 708 709| 错误码ID | 错误信息 | 710| -------- | -------------------------------------------- | 711| 401 | Parameter error. | 712| 8300001 | Invalid parameter value. | 713| 8300002 | Operation failed. Cannot connect to service. | 714| 8300003 | System internal error. | 715| 8300999 | Unknown error code. | 716 717**示例:** 718 719```ts 720import data from '@ohos.telephony.data'; 721 722observer.on('cellularDataFlowChange', (data: data.DataFlowType) => { 723 console.log("on networkStateChange, data:" + JSON.stringify(data)); 724}); 725``` 726 727 728## observer.on('cellularDataFlowChange')<sup>7+</sup> 729 730on\(type: 'cellularDataFlowChange', options: { slotId: number }, callback: Callback\<DataFlowType\>\): void; 731 732订阅指定卡槽位的蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 733 734**系统能力**:SystemCapability.Telephony.StateRegistry 735 736**参数:** 737 738| 参数名 | 类型 | 必填 | 说明 | 739| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 740| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件,参数固定为'cellularDataFlowChange'。 | 741| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 742| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 743 744**错误码:** 745 746以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 747 748| 错误码ID | 错误信息 | 749| -------- | -------------------------------------------- | 750| 401 | Parameter error. | 751| 8300001 | Invalid parameter value. | 752| 8300002 | Operation failed. Cannot connect to service. | 753| 8300003 | System internal error. | 754| 8300999 | Unknown error code. | 755 756**示例:** 757 758```ts 759import data from '@ohos.telephony.data'; 760 761class SlotId { 762 slotId: number = 0 763} 764let id: SlotId = {slotId: 0} 765observer.on('cellularDataFlowChange', id, (data: data.DataFlowType) => { 766 console.log("on cellularDataFlowChange, data:" + JSON.stringify(data)); 767}); 768``` 769 770 771## observer.off('cellularDataFlowChange')<sup>7+</sup> 772 773off\(type: 'cellularDataFlowChange', callback?: Callback\<DataFlowType\>\): void; 774 775移除订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 776 777>**说明:** 778> 779>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 780 781**系统能力**:SystemCapability.Telephony.StateRegistry 782 783**参数:** 784 785| 参数名 | 类型 | 必填 | 说明 | 786| -------- | ------------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 787| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件,参数固定为'cellularDataFlowChange'。 | 788| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 否 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 789 790**错误码:** 791 792以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 793 794| 错误码ID | 错误信息 | 795| -------- | -------------------------------------------- | 796| 401 | Parameter error. | 797| 8300001 | Invalid parameter value. | 798| 8300002 | Operation failed. Cannot connect to service. | 799| 8300003 | System internal error. | 800| 8300999 | Unknown error code. | 801 802**示例:** 803 804```ts 805import data from '@ohos.telephony.data'; 806 807let callback: (data: data.DataFlowType) => void = (data: data.DataFlowType) => { 808 console.log("on cellularDataFlowChange, data:" + JSON.stringify(data)); 809} 810observer.on('cellularDataFlowChange', callback); 811// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 812observer.off('cellularDataFlowChange', callback); 813observer.off('cellularDataFlowChange'); 814``` 815 816 817## observer.on('simStateChange')<sup>7+</sup> 818 819on\(type: 'simStateChange', callback: Callback\<SimStateData\>\): void; 820 821订阅sim状态更改事件,使用callback方式作为异步方法。 822 823**系统能力**:SystemCapability.Telephony.StateRegistry 824 825**参数:** 826 827| 参数名 | 类型 | 必填 | 说明 | 828| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------------- | 829| type | string | 是 | sim状态更改事件,参数固定为'simStateChange'。 | 830| callback | Callback\<[SimStateData](#simstatedata7)\> | 是 | 回调函数。 | 831 832**错误码:** 833 834以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 835 836| 错误码ID | 错误信息 | 837| -------- | -------------------------------------------- | 838| 401 | Parameter error. | 839| 8300001 | Invalid parameter value. | 840| 8300002 | Operation failed. Cannot connect to service. | 841| 8300003 | System internal error. | 842| 8300999 | Unknown error code. | 843 844**示例:** 845 846```ts 847observer.on('simStateChange', (data: observer.SimStateData) => { 848 console.log("on simStateChange, data:" + JSON.stringify(data)); 849}); 850``` 851 852 853## observer.on('simStateChange')<sup>7+</sup> 854 855on\(type: 'simStateChange', options: { slotId: number }, callback: Callback\<SimStateData\>\): void; 856 857订阅指定卡槽位的sim状态更改事件,使用callback方式作为异步方法。 858 859**系统能力**:SystemCapability.Telephony.StateRegistry 860 861**参数:** 862 863| 参数名 | 类型 | 必填 | 说明 | 864| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 865| type | string | 是 | sim状态更改事件,参数固定为'simStateChange'。 | 866| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 867| callback | Callback\<[SimStateData](#simstatedata7)\> | 是 | 回调函数。 | 868 869**错误码:** 870 871以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 872 873| 错误码ID | 错误信息 | 874| -------- | -------------------------------------------- | 875| 401 | Parameter error. | 876| 8300001 | Invalid parameter value. | 877| 8300002 | Operation failed. Cannot connect to service. | 878| 8300003 | System internal error. | 879| 8300999 | Unknown error code. | 880 881**示例:** 882 883```ts 884class SlotId { 885 slotId: number = 0 886} 887let id: SlotId = {slotId: 0} 888observer.on('simStateChange', id, (data: observer.SimStateData) => { 889 console.log("on simStateChange, data:" + JSON.stringify(data)); 890}); 891``` 892 893 894## observer.off('simStateChange')<sup>7+</sup> 895 896off\(type: 'simStateChange', callback?: Callback\<SimStateData\>\): void; 897 898移除订阅sim状态更改事件,使用callback方式作为异步方法。 899 900>**说明:** 901> 902>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 903 904**系统能力**:SystemCapability.Telephony.StateRegistry 905 906**参数:** 907 908| 参数名 | 类型 | 必填 | 说明 | 909| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 910| type | string | 是 | sim状态更改事件,参数固定为'simStateChange'。 | 911| callback | Callback\<[SimStateData](#simstatedata7)\> | 否 | 回调函数。 | 912 913**错误码:** 914 915以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 916 917| 错误码ID | 错误信息 | 918| -------- | -------------------------------------------- | 919| 401 | Parameter error. | 920| 8300001 | Invalid parameter value. | 921| 8300002 | Operation failed. Cannot connect to service. | 922| 8300003 | System internal error. | 923| 8300999 | Unknown error code. | 924 925**示例:** 926 927```ts 928let callback: (data: observer.SimStateData) => void = (data: observer.SimStateData) => { 929 console.log("on simStateChange, data:" + JSON.stringify(data)); 930} 931observer.on('simStateChange', callback); 932// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 933observer.off('simStateChange', callback); 934observer.off('simStateChange'); 935``` 936 937## observer.on('iccAccountInfoChange')<sup>10+</sup> 938 939on\(type: 'iccAccountInfoChange', callback: Callback\<void\>\): void; 940 941订阅卡帐户变化事件,使用callback方式作为异步方法。 942 943**系统能力**:SystemCapability.Telephony.StateRegistry 944 945**参数:** 946 947| 参数名 | 类型 | 必填 | 说明 | 948| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 949| type | string | 是 | 卡帐户变化事件,参数固定为'iccAccountInfoChange'。 | 950| callback | Callback\<void\> | 是 | 回调函数。 | 951 952**错误码:** 953 954以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 955 956| 错误码ID | 错误信息 | 957| -------- | -------------------------------------------- | 958| 8300001 | Invalid parameter value. | 959| 8300002 | Operation failed. Cannot connect to service. | 960| 8300003 | System internal error. | 961| 8300999 | Unknown error code. | 962 963**示例:** 964 965```ts 966observer.on('iccAccountInfoChange', () => { 967 console.log("on iccAccountInfoChange success"); 968}); 969``` 970 971 972## observer.off('iccAccountInfoChange')<sup>10+</sup> 973 974off\(type: 'iccAccountInfoChange', callback?: Callback\<void\>\): void; 975 976移除订阅卡帐户变化事件,使用callback方式作为异步方法。 977 978>**说明:** 979> 980>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 981 982**系统能力**:SystemCapability.Telephony.StateRegistry 983 984**参数:** 985 986| 参数名 | 类型 | 必填 | 说明 | 987| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 988| type | string | 是 | 卡帐户变化事件,参数固定为'iccAccountInfoChange'。 | 989| callback | Callback\<void\> | 否 | 回调函数。 | 990 991**错误码:** 992 993以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 994 995| 错误码ID | 错误信息 | 996| -------- | -------------------------------------------- | 997| 8300001 | Invalid parameter value. | 998| 8300002 | Operation failed. Cannot connect to service. | 999| 8300003 | System internal error. | 1000| 8300999 | Unknown error code. | 1001 1002**示例:** 1003 1004```ts 1005let callback: () => void = () => { 1006 console.log("on iccAccountInfoChange success"); 1007} 1008observer.on('iccAccountInfoChange', callback); 1009// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 1010observer.off('iccAccountInfoChange', callback); 1011observer.off('iccAccountInfoChange'); 1012``` 1013 1014 1015## LockReason<sup>8+</sup> 1016 1017SIM卡锁类型。 1018 1019**系统能力**:SystemCapability.Telephony.StateRegistry 1020 1021| 名称 | 值 | 说明 | 1022| ----------- | ---- | ----------------- | 1023| SIM_NONE | 0 | 无锁。 | 1024| SIM_PIN | 1 | PIN锁。 | 1025| SIM_PUK | 2 | PUK锁。 | 1026| SIM_PN_PIN | 3 | 网络PIN锁。 | 1027| SIM_PN_PUK | 4 | 网络PUK锁。 | 1028| SIM_PU_PIN | 5 | 子网PIN锁。 | 1029| SIM_PU_PUK | 6 | 子网PUK锁。 | 1030| SIM_PP_PIN | 7 | 服务提供商PIN锁。 | 1031| SIM_PP_PUK | 8 | 服务提供商PUK锁。 | 1032| SIM_PC_PIN | 9 | 组织PIN锁。 | 1033| SIM_PC_PUK | 10 | 组织PUK锁。 | 1034| SIM_SIM_PIN | 11 | SIM PIN锁。 | 1035| SIM_SIM_PUK | 12 | SIM PUK锁。 | 1036 1037 1038## SimStateData<sup>7+</sup> 1039 1040SIM卡类型和状态。 1041 1042**系统能力**:SystemCapability.Telephony.StateRegistry 1043 1044| 名称 | 类型 | 必填 | 说明 | 1045| ------------------- | ----------------------------------- | ---- | -------------------------------------------------------- | 1046| type | [CardType](js-apis-sim.md#cardtype7) | 是 | SIM卡类型。 | 1047| state | [SimState](js-apis-sim.md#simstate) | 是 | SIM卡状态。 | 1048| reason<sup>8+</sup> | [LockReason](#lockreason8) | 是 | SIM卡锁类型。 | 1049