1# observer 2 3>**说明:** 4> 5>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 6 7 8## 导入模块 9 10``` 11import observer from '@ohos.telephony.observer' 12``` 13 14## observer.on('networkStateChange') 15 16on\(type: \'networkStateChange\', callback: Callback<NetworkState\>\): void; 17 18订阅网络状态变化事件,使用callback方式作为异步方法。 19 20**需要权限**:ohos.permission.GET_NETWORK_INFO 21 22**系统能力**:SystemCapability.Telephony.StateRegistry 23 24**参数:** 25 26| 参数名 | 类型 | 必填 | 说明 | 27| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 28| type | string | 是 | 网络状态变化事件 | 29| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 是 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) | 30 31**示例:** 32 33``` 34observer.on('networkStateChange', data =>{ 35 console.log("on networkStateChange, data:" + JSON.stringify(data)); 36}); 37``` 38 39 40## observer.on('networkStateChange') 41 42on\(type: \'networkStateChange\', options: { slotId: number }, callback: Callback<NetworkState\>\): void; 43 44订阅指定卡槽位的网络状态变化事件,使用callback方式作为异步方法。 45 46**需要权限**:ohos.permission.GET_NETWORK_INFO 47 48**系统能力**:SystemCapability.Telephony.StateRegistry 49 50**参数:** 51 52| 参数名 | 类型 | 必填 | 说明 | 53| ------ | ------ | ---- | -------------------------------------- | 54| type | string | 是 | 网络状态变化事件 | 55| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 56| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 是 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) | 57 58**示例:** 59 60``` 61observer.on('networkStateChange', {slotId: 0}, data =>{ 62 console.log("on networkStateChange, data:" + JSON.stringify(data)); 63}); 64``` 65 66 67## observer.off('networkStateChange') 68 69off\(type: \'networkStateChange\', callback?: Callback<NetworkState\>\): void; 70 71取消订阅网络状态变化事件,使用callback方式作为异步方法。 72 73**需要权限**:ohos.permission.GET_NETWORK_INFO 74 75>**说明:** 76> 77>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 78 79**系统能力**:SystemCapability.Telephony.StateRegistry 80 81**参数:** 82 83| 参数名 | 类型 | 必填 | 说明 | 84| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | 85| type | string | 是 | 网络状态变化事件 | 86| callback | Callback\<[NetworkState](js-apis-radio.md#networkstate)\> | 否 | 回调函数。参考radio的[NetworkState](js-apis-radio.md#networkstate) | 87 88**示例:** 89 90``` 91let callback = data => { 92 console.log("on networkStateChange, data:" + JSON.stringify(data)); 93} 94observer.on('networkStateChange', callback); 95// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 96observer.off('networkStateChange', callback); 97observer.off('networkStateChange'); 98``` 99 100## observer.on('signalInfoChange') 101 102on\(type: \'signalInfoChange\', callback: Callback<Array<SignalInformation\>\>): void; 103 104订阅信号状态变化事件,使用callback方式作为异步方法。 105 106**系统能力**:SystemCapability.Telephony.StateRegistry 107 108**参数:** 109 110| 参数名 | 类型 | 必填 | 说明 | 111| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 112| type | string | 是 | 信号状态变化事件 | 113| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 114 115**示例:** 116 117``` 118observer.on('signalInfoChange', data =>{ 119 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 120}); 121``` 122 123 124## observer.on('signalInfoChange') 125 126on\(type: \'signalInfoChange\', options: { slotId: number }, callback: Callback<Array<SignalInformation\>\>): void; 127 128订阅指定卡槽位的信号状态变化事件,使用callback方式作为异步方法。 129 130**系统能力**:SystemCapability.Telephony.StateRegistry 131 132**参数:** 133 134| 参数名 | 类型 | 必填 | 说明 | 135| ------ | ------ | ---- | -------------------------------------- | 136| type | string | 是 | 信号状态变化事件 | 137| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 138| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 是 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 139 140**示例:** 141 142``` 143observer.on('signalInfoChange', {slotId: 0}, data =>{ 144 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 145}); 146``` 147 148 149## observer.off('signalInfoChange') 150 151off\(type: \'signalInfoChange\', callback?: Callback<Array<SignalInformation\>\>): void; 152 153取消订阅信号状态变化事件,使用callback方式作为异步方法。 154 155>**说明:** 156> 157>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 158 159**系统能力**:SystemCapability.Telephony.StateRegistry 160 161**参数:** 162 163| 参数名 | 类型 | 必填 | 说明 | 164| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 165| type | string | 是 | 信号状态变化事件 | 166| callback | Callback<Array<[SignalInformation](js-apis-radio.md#signalinformation)\>\> | 否 | 回调函数。参考radio的[SignalInformation](js-apis-radio.md#signalinformation) | 167 168**示例:** 169 170``` 171let callback = data => { 172 console.log("on signalInfoChange, data:" + JSON.stringify(data)); 173} 174observer.on('signalInfoChange', callback); 175// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 176observer.off('signalInfoChange', callback); 177observer.off('signalInfoChange'); 178``` 179 180 181## observer.on('callStateChange') 182 183on(type: 'callStateChange', callback: Callback\<{ state: CallState, number: string }\>): void; 184 185订阅通话状态变化事件,使用callback方式作为异步方法。 186 187**需要权限**:ohos.permission.READ_CALL_LOG 188 189**系统能力**:SystemCapability.Telephony.StateRegistry 190 191**参数:** 192 193| 参数名 | 类型 | 必填 | 说明 | 194| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 195| type | string | 是 | 通话状态变化事件 | 196| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 197 198**示例:** 199 200``` 201observer.on('callStateChange', value =>{ 202 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 203}); 204``` 205 206 207## observer.on('callStateChange') 208 209on(type: 'callStateChange', options: { slotId: number }, callback: Callback<{ state:CallState, number: string }>): void; 210 211订阅通话状态变化事件,使用callback方式作为异步方法。 212 213**需要权限**:ohos.permission.READ_CALL_LOG 214 215**系统能力**:SystemCapability.Telephony.StateRegistry 216 217**参数:** 218 219| 参数名 | 类型 | 必填 | 说明 | 220| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 221| type | string | 是 | 通话状态变化事件 | 222| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 223| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 224 225**示例:** 226 227``` 228observer.on('callStateChange', {slotId: 0}, value =>{ 229 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 230}); 231``` 232 233 234## observer.off('callStateChange') 235 236off(type: 'callStateChange', callback?: Callback<{ state: CallState, number: string }>): void; 237 238取消订阅通话状态变化事件,使用callback方式作为异步方法。 239 240**需要权限**:ohos.permission.READ_CALL_LOG 241 242>**说明:** 243> 244>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 245 246**系统能力**:SystemCapability.Telephony.StateRegistry 247 248**参数:** 249 250| 参数名 | 类型 | 必填 | 说明 | 251| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 252| type | string | 是 | 通话状态变化事件 | 253| callback | Callback\<{ state: [CallState](js-apis-call.md#callstate), number: string }\> | 否 | 回调函数,参考call的[CallState](js-apis-call.md#callstate)<br />number:电话号码 | 254 255**示例:** 256 257``` 258let callback = value => { 259 console.log("on callStateChange, state:" + value.state + ", number:" + value.number); 260} 261observer.on('callStateChange', callback); 262// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 263observer.off('callStateChange', callback); 264observer.off('callStateChange'); 265``` 266 267 268## observer.on('cellularDataConnectionStateChange')<sup>7+</sup> 269 270on\(type: 'cellularDataConnectionStateChange', callback: Callback\<{ state: DataConnectState, network: RatType}\>\): void; 271 272订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。 273 274**系统能力**:SystemCapability.Telephony.StateRegistry 275 276**参数:** 277 278| 参数名 | 类型 | 必填 | 说明 | 279| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 280| type | string | 是 | 蜂窝数据链路连接状态事件 | 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)。 | 282 283**示例:** 284 285``` 286observer.on('cellularDataConnectionStateChange', value =>{ 287 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 288}); 289``` 290 291 292## observer.on('cellularDataConnectionStateChange')<sup>7+</sup> 293 294on\(type: 'cellularDataConnectionStateChange', options: { slotId: number }, callback: Callback\<{ state: DataConnectState, network: RatType }\>\): void; 295 296订阅指定卡槽位的蜂窝数据链路连接状态,使用callback方式作为异步方法。 297 298**系统能力**:SystemCapability.Telephony.StateRegistry 299 300**参数:** 301 302| 参数名 | 类型 | 必填 | 说明 | 303| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 304| type | string | 是 | 蜂窝数据链路连接状态事件 | 305| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 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)。 | 307 308**示例:** 309 310``` 311observer.on('cellularDataConnectionStateChange', {slotId: 0}, value =>{ 312 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 313}); 314``` 315 316 317## observer.off('cellularDataConnectionStateChange')<sup>7+</sup> 318 319off\(type: 'cellularDataConnectionStateChange', callback?: Callback\<{ state: DataConnectState, network: RatType}\>\): void; 320 321移除订阅蜂窝数据链路连接状态,使用callback方式作为异步方法。 322 323>**说明:** 324> 325>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 326 327**系统能力**:SystemCapability.Telephony.StateRegistry 328 329**参数:** 330 331| 参数名 | 类型 | 必填 | 说明 | 332| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 333| type | string | 是 | 蜂窝数据链路连接状态事件 | 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)。 | 335 336**示例:** 337 338``` 339let callback = value => { 340 console.log("on cellularDataConnectionStateChange, state:" + value.state + ", network:" + value.network); 341} 342observer.on('cellularDataConnectionStateChange', callback); 343// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 344observer.off('cellularDataConnectionStateChange', callback); 345observer.off('cellularDataConnectionStateChange'); 346``` 347 348 349## observer.on('cellularDataFlowChange')<sup>7+</sup> 350 351on\(type: 'cellularDataFlowChange', callback: Callback\<DataFlowType\>\): void; 352 353订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 354 355**系统能力**:SystemCapability.Telephony.StateRegistry 356 357**参数:** 358 359| 参数名 | 类型 | 必填 | 说明 | 360| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 361| type | string | 是 | 蜂窝数据业务的上下行数据流状态状态事件 | 362| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 363 364**示例:** 365 366``` 367observer.on('cellularDataFlowChange', data =>{ 368 console.log("on networkStateChange, data:" + JSON.stringify(data)); 369}); 370``` 371 372 373## observer.on('cellularDataFlowChange')<sup>7+</sup> 374 375on\(type: 'cellularDataFlowChange', options: { slotId: number }, callback: Callback\<DataFlowType\>\): void; 376 377订阅指定卡槽位的蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 378 379**系统能力**:SystemCapability.Telephony.StateRegistry 380 381**参数:** 382 383| 参数名 | 类型 | 必填 | 说明 | 384| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 385| type | string | 是 | 蜂窝数据业务的上下行数据流状态事件 | 386| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 387| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 是 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 388 389**示例:** 390 391``` 392observer.on('cellularDataFlowChange', {slotId: 0}, data =>{ 393 console.log("on cellularDataFlowChange, data:" + JSON.stringify(data)); 394}); 395``` 396 397 398## observer.off('cellularDataFlowChange')<sup>7+</sup> 399 400off\(type: 'cellularDataFlowChange', callback?: Callback\<DataFlowType\>\): void; 401 402移除订阅蜂窝数据业务的上下行数据流状态,使用callback方式作为异步方法。 403 404>**说明:** 405> 406>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 407 408**系统能力**:SystemCapability.Telephony.StateRegistry 409 410**参数:** 411 412| 参数名 | 类型 | 必填 | 说明 | 413| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 414| type | string | 是 | 蜂窝数据业务的上下行数据流状态事件 | 415| callback | Callback\<[DataFlowType](js-apis-telephony-data.md#dataflowtype)\> | 否 | 回调函数,参考data的[DataFlowType](js-apis-telephony-data.md#dataflowtype)。 | 416 417**示例:** 418 419``` 420let callback = data => { 421 console.log("on cellularDataFlowChange, data:" + JSON.stringify(data)); 422} 423observer.on('cellularDataFlowChange', callback); 424// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 425observer.off('cellularDataFlowChange', callback); 426observer.off('cellularDataFlowChange'); 427``` 428 429 430## observer.on('simStateChange')<sup>7+</sup> 431 432on\(type: 'simStateChange', callback: Callback\<SimStateData\>\): void; 433 434订阅sim状态更改事件,使用callback方式作为异步方法。 435 436**系统能力**:SystemCapability.Telephony.StateRegistry 437 438**参数:** 439 440| 参数名 | 类型 | 必填 | 说明 | 441| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 442| type | string | 是 | sim状态更改事件 | 443| callback | Callback\<[SimStateData](#simstatedata7)\> | 是 | 回调函数。 | 444 445**示例:** 446 447``` 448observer.on('simStateChange', data =>{ 449 console.log("on simStateChange, data:" + JSON.stringify(data)); 450}); 451``` 452 453 454## observer.on('simStateChange')<sup>7+</sup> 455 456on\(type: 'simStateChange', options: { slotId: number }, callback: Callback\<SimStateData\>\): void; 457 458订阅指定卡槽位的sim状态更改事件,使用callback方式作为异步方法。 459 460**系统能力**:SystemCapability.Telephony.StateRegistry 461 462**参数:** 463 464| 参数名 | 类型 | 必填 | 说明 | 465| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 466| type | string | 是 | sim状态更改事件 | 467| slotId | number | 是 | 卡槽ID。<br/>- 0:卡槽1<br/>- 1:卡槽2 | 468| callback | Callback\<[SimStateData](#simstatedata7)\> | 是 | 回调函数。 | 469 470**示例:** 471 472``` 473observer.on('simStateChange', {slotId: 0}, data =>{ 474 console.log("on simStateChange, data:" + JSON.stringify(data)); 475}); 476``` 477 478 479## observer.off('simStateChange')<sup>7+</sup> 480 481off\(type: 'simStateChange', callback?: Callback\<SimStateData\>\): void; 482 483移除订阅sim状态更改事件,使用callback方式作为异步方法。 484 485>**说明:** 486> 487>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 488 489**系统能力**:SystemCapability.Telephony.StateRegistry 490 491**参数:** 492 493| 参数名 | 类型 | 必填 | 说明 | 494| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 495| type | string | 是 | sim状态更改事件 | 496| callback | Callback\<[SimStateData](#simstatedata7)\> | 否 | 回调函数。 | 497 498**示例:** 499 500``` 501let callback = data => { 502 console.log("on simStateChange, data:" + JSON.stringify(data)); 503} 504observer.on('simStateChange', callback); 505// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 506observer.off('simStateChange', callback); 507observer.off('simStateChange'); 508``` 509 510 511## LockReason<sup>8+</sup> 512 513SIM卡锁类型。 514 515**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.StateRegistry。 516 517| 名称 | 值 | 说明 | 518| ----------- | ---- | ----------------- | 519| SIM_NONE | 0 | 无锁。 | 520| SIM_PIN | 1 | PIN锁。 | 521| SIM_PUK | 2 | PUK锁。 | 522| SIM_PN_PIN | 3 | 网络PIN锁。 | 523| SIM_PN_PUK | 4 | 网络PUK锁。 | 524| SIM_PU_PIN | 5 | 子网PIN锁。 | 525| SIM_PU_PUK | 6 | 子网PUK锁。 | 526| SIM_PP_PIN | 7 | 服务提供商PIN锁。 | 527| SIM_PP_PUK | 8 | 服务提供商PUK锁。 | 528| SIM_PC_PIN | 9 | 组织PIN锁。 | 529| SIM_PC_PUK | 10 | 组织PUK锁。 | 530| SIM_SIM_PIN | 11 | SIM PIN锁。 | 531| SIM_SIM_PUK | 12 | SIM PUK锁。 | 532 533 534## SimStateData<sup>7+</sup> 535 536SIM卡类型和状态。 537 538**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.StateRegistry。 539 540| 名称 | 类型 | 说明 | 541| ----------------- | --------------------- | ------------------------------------------------------------ | 542| type | [CardType](js-apis-sim.md#cardtype) | SIM卡类型,参考sim的[CardType](js-apis-sim.md#cardtype)。 | 543| state | [SimState](js-apis-sim.md#simstate) | SIM卡状态,参考sim的[SimState](js-apis-sim.md#simstate)。 | 544| reason<sup>8+</sup> | [LockReason](#lockreason8) | SIM卡锁类型。 | 545 546