1# @ohos.resourceschedule.usageStatistics (设备使用信息统计) 2 3本模块提供设备使用信息统计能力。 4 5设备使用信息统计,系统应用可调用接口实现如下功能: 6 7- 查询设备上各应用在不同时间段的使用时长、各应用的事件(前台、后台、长时任务开始、长时任务结束)信息及各应用的通知次数信息。 8- 查询系统事件(休眠、唤醒、解锁、锁屏)统计信息。 9- 查询应用分组信息(其他应用和自身应用)。 10- 查询应用空闲状态(其他应用和自身应用)。 11- 设置应用分组信息(其他应用)。 12- 注册和解除注册应用分组变化监听。 13 14三方应用可调用接口实现如下功能: 15 16- 查询应用空闲状态(仅限自身应用)。 17- 查询应用分组信息(仅限自身应用)。 18- 查询应用事件(仅限自身应用)。 19 20> **说明:** 21> 22> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 23> 24 25 26## 导入模块 27 28``` 29import usageStatistics from '@ohos.resourceschedule.usageStatistics' 30``` 31 32## usageStatistics.isIdleState 33 34isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void 35 36判断指定bundleName的应用当前是否是空闲状态,三方应用只能查询自身的空闲状态,使用Callback形式返回。 37 38**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 39 40**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 41 42**系统API**:此接口为系统接口。 43 44**参数**: 45 46| 参数名 | 类型 | 必填 | 说明 | 47| ---------- | ---------------------------- | ---- | ---------------------------------------- | 48| bundleName | string | 是 | 应用的bundleName。 | 49| callback | AsyncCallback<boolean> | 是 | 指定的callback回调方法。如果指定的bundleName有效,则返回指定bundleName的应用当前是否是空闲状态;否则返回null。 | 50 51**错误码**: 52 53以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 54 55| 错误码ID | 错误信息 | 56| ---------- | ---------------------------- | 57| 10000001 | Memory operation failed. | 58| 10000002 | Parcel operation failed. | 59| 10000003 | System service operation failed. | 60| 10000004 | IPC failed. | 61| 10000006 | Failed to get the application information. | 62 63**示例**: 64 ```js 65 try{ 66 usageStatistics.isIdleState("com.ohos.camera", (err, res) => { 67 if (err) { 68 console.log('BUNDLE_ACTIVE isIdleState callback failed. code is: ' + err.code + ',message is: ' + err.message); 69 } else { 70 console.log('BUNDLE_ACTIVE isIdleState callback succeeded, result: ' + JSON.stringify(res)); 71 } 72 }); 73 } catch(error) { 74 console.log('BUNDLE_ACTIVE isIdleState throw error, code is: ' + error.code + ',message is: ' + error.message); 75 } 76 ``` 77 78## usageStatistics.isIdleState 79 80isIdleState(bundleName: string): Promise<boolean> 81 82判断指定bundleName的应用当前是否是空闲状态,三方应用只能查询自身的空闲状态,使用Promise形式返回。 83 84**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 85 86**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 87 88**系统API**:此接口为系统接口。 89 90**参数**: 91 92| 参数名 | 类型 | 必填 | 说明 | 93| ---------- | ------ | ---- | -------------- | 94| bundleName | string | 是 | 应用的bundleName。 | 95 96**返回值**: 97 98| 类型 | 说明 | 99| ---------------------- | ---------------------------------------- | 100| Promise<boolean> | 指定的Promise回调方法。如果指定的bundleName有效,则返回指定bundleName的应用当前是否是空闲状态;否则返回null。 | 101 102**错误码**: 103 104以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 105 106| 错误码ID | 错误信息 | 107| ---------- | ---------------------------- | 108| 10000001 | Memory operation failed. | 109| 10000002 | Parcel operation failed. | 110| 10000003 | System service operation failed. | 111| 10000004 | IPC failed. | 112| 10000006 | Failed to get the application information. | 113 114**示例**: 115 116 ```js 117 try{ 118 usageStatistics.isIdleState("com.ohos.camera").then( res => { 119 console.log('BUNDLE_ACTIVE isIdleState promise succeeded, result: ' + JSON.stringify(res)); 120 }).catch( err => { 121 console.log('BUNDLE_ACTIVE isIdleState promise failed. code is: ' + err.code + ',message is: ' + err.message); 122 }); 123 } catch (error) { 124 console.log('BUNDLE_ACTIVE isIdleState throw error, code is: ' + error.code + ',message is: ' + error.message); 125 } 126 ``` 127 128## usageStatistics.queryAppGroup 129 130queryAppGroup(): Promise<number> 131 132查询当前应用的优先级分组。使用Promise形式返回其应用分组。 133 134**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 135 136**系统API**:此接口为系统接口。 137 138**返回值**: 139 140| 类型 | 说明 | 141| --------------- | --------------------------- | 142| Promise<number> | 指定的Promise回调方法。返回查询的应用分组结果。 | 143 144**错误码**: 145 146以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 147 148| 错误码ID | 错误信息 | 149| ---------- | ---------------------------- | 150| 10000001 | Memory operation failed. | 151| 10000002 | Parcel operation failed. | 152| 10000003 | System service operation failed. | 153| 10000004 | IPC failed. | 154| 10000005 | Application is not installed. | 155| 10000006 | Failed to get the application information. | 156| 10100002 | Failed to get the application group information. | 157 158**示例**: 159 160```javascript 161 try{ 162 usageStatistics.queryAppGroup().then( res => { 163 console.log('BUNDLE_ACTIVE queryAppGroup promise succeeded. result: ' + JSON.stringify(res)); 164 }).catch( err => { 165 console.log('BUNDLE_ACTIVE queryAppGroup promise failed. code is: ' + err.code + ',message is: ' + err.message); 166 }); 167 } catch (error) { 168 console.log('BUNDLE_ACTIVE queryAppGroup throw error, code is: ' + error.code + ',message is: ' + error.message); 169 } 170``` 171 172## usageStatistics.queryAppGroup 173 174queryAppGroup(callback: AsyncCallback<number>): void 175 176查询当前应用的优先级分组。使用callback形式返回其应用分组。 177 178**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 179 180**系统API**:此接口为系统接口。 181 182**参数**: 183 184| 参数名 | 类型 | 必填 | 说明 | 185| -------- | --------------------- | ---- | -------------------------- | 186| callback | AsyncCallback<number> | 是 | 指定的CallBack回调方法。返回查询的应用分组。 | 187 188**错误码**: 189 190以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 191 192| 错误码ID | 错误信息 | 193| ---------- | ---------------------------- | 194| 10000001 | Memory operation failed. | 195| 10000002 | Parcel operation failed. | 196| 10000003 | System service operation failed. | 197| 10000004 | IPC failed. | 198| 10000005 | Application is not installed. | 199| 10000006 | Failed to get the application information. | 200| 10100002 | Failed to get the application group information. | 201 202**示例**: 203 204```javascript 205 try{ 206 usageStatistics.queryAppGroup((err, res) => { 207 if(err) { 208 console.log('BUNDLE_ACTIVE queryAppGroup callback failed. code is: ' + err.code + ',message is: ' + err.message); 209 } else { 210 console.log('BUNDLE_ACTIVE queryAppGroup callback succeeded. result: ' + JSON.stringify(res)); 211 } 212 }); 213 } catch (error) { 214 console.log('BUNDLE_ACTIVE queryAppGroup throw error, code is: ' + error.code + ',message is: ' + error.message); 215 } 216``` 217 218## usageStatistics.queryBundleStatsInfos 219 220queryBundleStatsInfos(begin: number, end: number, callback: AsyncCallback<BundleStatsMap>): void 221 222通过指定起始和结束时间查询应用使用时长统计信息,使用Callback形式返回。 223 224**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 225 226**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 227 228**系统API**:此接口为系统接口。 229 230**参数**: 231 232| 参数名 | 类型 | 必填 | 说明 | 233| -------- | ---------------------------------------- | ---- | --------------------------------------- | 234| begin | number | 是 | 起始时间,以毫秒为单位。 | 235| end | number | 是 | 结束时间,以毫秒为单位。 | 236| callback | AsyncCallback<[BundleStatsMap](#bundlestatsmap)> | 是 | 指定的callback回调方法。返回指定起始和结束时间内应用使用时长统计信息。 | 237 238**错误码**: 239 240以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 241 242| 错误码ID | 错误信息 | 243| ---------- | ---------------------------- | 244| 10000001 | Memory operation failed. | 245| 10000002 | Parcel operation failed. | 246| 10000003 | System service operation failed. | 247| 10000004 | IPC failed. | 248| 10000006 | Failed to get the application information. | 249| 10000007 | Failed to get the system time. | 250 251**示例**: 252 253 ```js 254 try{ 255 usageStatistics.queryBundleStatsInfos(0, 20000000000000, (err, res) => { 256 if (err) { 257 console.log('BUNDLE_ACTIVE queryBundleStatsInfos callback failed. code is: ' + err.code + ',message is: ' + err.message); 258 } else { 259 console.log('BUNDLE_ACTIVE queryBundleStatsInfos callback success.'); 260 let i = 1; 261 for(let key in res){ 262 console.log('BUNDLE_ACTIVE queryBundleStatsInfos callback number : ' + i); 263 console.log('BUNDLE_ACTIVE queryBundleStatsInfos callback result ' + JSON.stringify(res[key])); 264 i++; 265 } 266 } 267 }); 268 } catch (error) { 269 console.log('BUNDLE_ACTIVE queryBundleStatsInfos throw error, code is: ' + error.code + ',message is: ' + error.message); 270 } 271 ``` 272 273## usageStatistics.queryBundleStatsInfos 274 275queryBundleStatsInfos(begin: number, end: number): Promise<BundleStatsMap> 276 277通过指定起始和结束时间查询应用使用时长统计信息,使用Promise形式返回。 278 279**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 280 281**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 282 283**系统API**:此接口为系统接口。 284 285**参数**: 286 287| 参数名 | 类型 | 必填 | 说明 | 288| ----- | ------ | ---- | ----- | 289| begin | number | 是 | 起始时间,以毫秒为单位。 | 290| end | number | 是 | 结束时间,以毫秒为单位。 | 291 292**返回值**: 293 294| 类型 | 说明 | 295| ---------------------------------------- | -------------------------------------- | 296| Promise<[BundleStatsMap](#bundlestatsmap)> | 指定的Promise回调方法。返回指定起始和结束时间内应用使用时长统计信息。 | 297 298**错误码**: 299 300以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 301 302| 错误码ID | 错误信息 | 303| ---------- | ---------------------------- | 304| 10000001 | Memory operation failed. | 305| 10000002 | Parcel operation failed. | 306| 10000003 | System service operation failed. | 307| 10000004 | IPC failed. | 308| 10000006 | Failed to get the application information. | 309| 10000007 | Failed to get the system time. | 310 311**示例**: 312 313 ```js 314 try{ 315 usageStatistics.queryBundleStatsInfos(0, 20000000000000).then( res => { 316 console.log('BUNDLE_ACTIVE queryBundleStatsInfos promise success.'); 317 let i = 1; 318 for(let key in res){ 319 console.log('BUNDLE_ACTIVE queryBundleStatsInfos promise number : ' + i); 320 console.log('BUNDLE_ACTIVE queryBundleStatsInfos promise result ' + JSON.stringify(res[key])); 321 i++; 322 } 323 }).catch( err => { 324 console.log('BUNDLE_ACTIVE queryBundleStatsInfos promise failed. code is: ' + err.code + ',message is: ' + err.message); 325 }); 326 } catch (error) { 327 console.log('BUNDLE_ACTIVE queryBundleStatsInfos throw error, code is: ' + error.code + ',message is: ' + error.message); 328 } 329 ``` 330 331## usageStatistics.queryBundleStatsInfoByInterval 332 333queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStatsInfo>>): void 334 335通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,使用Callback形式返回。 336 337**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 338 339**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 340 341**系统API**:此接口为系统接口。 342 343**参数**: 344 345| 参数名 | 类型 | 必填 | 说明 | 346| ---------- | ---------------------------------------- | ---- | ---------------------------------------- | 347| byInterval | [IntervalType](#intervaltype) | 是 | 查询类型。 | 348| begin | number | 是 | 起始时间,以毫秒为单位。 | 349| end | number | 是 | 结束时间,以毫秒为单位。 | 350| callback | AsyncCallback<Array<[BundleStatsInfo](#bundlestatsinfo)>> | 是 | 指定的callback回调方法。返回指定时间段间隔(天、周、月、年)查询应用使用时长统计信息。 | 351 352**错误码**: 353 354以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 355 356| 错误码ID | 错误信息 | 357| ---------- | ---------------------------- | 358| 10000001 | Memory operation failed. | 359| 10000002 | Parcel operation failed. | 360| 10000003 | System service operation failed. | 361| 10000004 | IPC failed. | 362| 10000006 | Failed to get the application information. | 363| 10000007 | Failed to get the system time. | 364 365**示例**: 366 367 ```js 368 try{ 369 usageStatistics.queryBundleStatsInfoByInterval(0, 0, 20000000000000, (err, res) => { 370 if (err) { 371 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval callback failed. code is: ' + err.code + ',message is: ' + err.message); 372 } else { 373 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval callback success.'); 374 for (let i = 0; i < res.length; i++) { 375 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval callback number : ' + (i + 1)); 376 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval callback result ' + JSON.stringify(res[i])); 377 } 378 } 379 }); 380 } catch (error) { 381 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval throw error, code is: ' + error.code + ',message is: ' + error.message); 382 } 383 ``` 384 385## usageStatistics.queryBundleStatsInfoByInterval 386 387queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise<Array<BundleStatsInfo>> 388 389通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,使用Promise形式返回。 390 391**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 392 393**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 394 395**系统API**:此接口为系统接口。 396 397**参数**: 398 399| 参数名 | 类型 | 必填 | 说明 | 400| ---------- | ----------------------------- | ---- | ----- | 401| byInterval | [IntervalType](#intervaltype) | 是 | 查询类型。 | 402| begin | number | 是 | 起始时间,以毫秒为单位。 | 403| end | number | 是 | 结束时间,以毫秒为单位。 | 404 405**返回值**: 406 407| 类型 | 说明 | 408| ---------------------------------------- | ---------------------------------------- | 409| Promise<Array<[BundleStatsInfo](#bundlestatsinfo)>> | 指定的Promise回调方法。返回指定时间段间隔(天、周、月、年)查询应用使用时长统计信息。 | 410 411**错误码**: 412 413以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 414 415| 错误码ID | 错误信息 | 416| ---------- | ---------------------------- | 417| 10000001 | Memory operation failed. | 418| 10000002 | Parcel operation failed. | 419| 10000003 | System service operation failed. | 420| 10000004 | IPC failed. | 421| 10000006 | Failed to get the application information. | 422| 10000007 | Failed to get the system time. | 423 424**示例**: 425 426 ```js 427 try{ 428 usageStatistics.queryBundleStatsInfoByInterval(0, 0, 20000000000000).then( res => { 429 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval promise success.'); 430 for (let i = 0; i < res.length; i++) { 431 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval promise number : ' + (i + 1)); 432 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval promise result ' + JSON.stringify(res[i])); 433 } 434 }).catch( err => { 435 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval promise failed. code is: ' + err.code + ',message is: ' + err.message); 436 }); 437 } catch (error) { 438 console.log('BUNDLE_ACTIVE queryBundleStatsInfoByInterval throw error, code is: ' + error.code + ',message is: ' + error.message); 439 } 440 ``` 441 442## usageStatistics.queryBundleEvents 443 444queryBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void 445 446通过指定起始和结束时间查询所有应用的事件集合,使用Callback形式返回。 447 448**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 449 450**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 451 452**系统API**:此接口为系统接口。 453 454**参数**: 455 456| 参数名 | 类型 | 必填 | 说明 | 457| -------- | ---------------------------------------- | ---- | --------------------------------------- | 458| begin | number | 是 | 起始时间,以毫秒为单位。 | 459| end | number | 是 | 结束时间,以毫秒为单位。 | 460| callback | AsyncCallback<Array<[BundleEvents](#bundleevents)>> | 是 | 指定的callback回调方法。返回指定起始和结束时间查询所有应用的事件集合。 | 461 462**错误码**: 463 464以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 465 466| 错误码ID | 错误信息 | 467| ---------- | ---------------------------- | 468| 10000001 | Memory operation failed. | 469| 10000002 | Parcel operation failed. | 470| 10000003 | System service operation failed. | 471| 10000004 | IPC failed. | 472| 10000006 | Failed to get the application information. | 473| 10000007 | Failed to get the system time. | 474 475**示例**: 476 477 ```js 478 try{ 479 usageStatistics.queryBundleEvents(0, 20000000000000, (err, res) => { 480 if (err) { 481 console.log('BUNDLE_ACTIVE queryBundleEvents callback failed. code is: ' + err.code + ',message is: ' + err.message); 482 } else { 483 console.log('BUNDLE_ACTIVE queryBundleEvents callback success.'); 484 for (let i = 0; i < res.length; i++) { 485 console.log('BUNDLE_ACTIVE queryBundleEvents callback number : ' + (i + 1)); 486 console.log('BUNDLE_ACTIVE queryBundleEvents callback result ' + JSON.stringify(res[i])); 487 } 488 } 489 }); 490 } catch (error) { 491 console.log('BUNDLE_ACTIVE queryBundleEvents throw error, code is: ' + error.code + ',message is: ' + error.message); 492 } 493 ``` 494 495## usageStatistics.queryBundleEvents 496 497queryBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>> 498 499通过指定起始和结束时间查询所有应用的事件集合,使用Promise形式返回。 500 501**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 502 503**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 504 505**系统API**:此接口为系统接口。 506 507**参数**: 508 509| 参数名 | 类型 | 必填 | 说明 | 510| ----- | ------ | ---- | ----- | 511| begin | number | 是 | 起始时间,以毫秒为单位。 | 512| end | number | 是 | 结束时间,以毫秒为单位。 | 513 514**返回值**: 515 516| 类型 | 说明 | 517| ---------------------------------------- | -------------------------------------- | 518| Promise<Array<[BundleEvents](#bundleevents)>> | 指定的Promise回调方法。返回指定起始和结束时间查询所有应用的事件集合。 | 519 520**错误码**: 521 522以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 523 524| 错误码ID | 错误信息 | 525| ---------- | ---------------------------- | 526| 10000001 | Memory operation failed. | 527| 10000002 | Parcel operation failed. | 528| 10000003 | System service operation failed. | 529| 10000004 | IPC failed. | 530| 10000006 | Failed to get the application information. | 531| 10000007 | Failed to get the system time. | 532 533**示例**: 534 535 ```js 536 try{ 537 usageStatistics.queryBundleEvents(0, 20000000000000).then( res => { 538 console.log('BUNDLE_ACTIVE queryBundleEvents promise success.'); 539 for (let i = 0; i < res.length; i++) { 540 console.log('BUNDLE_ACTIVE queryBundleEvents promise number : ' + (i + 1)); 541 console.log('BUNDLE_ACTIVE queryBundleEvents promise result ' + JSON.stringify(res[i])); 542 } 543 }).catch( err => { 544 console.log('BUNDLE_ACTIVE queryBundleEvents promise failed. code is: ' + err.code + ',message is: ' + err.message); 545 }); 546 } catch (error) { 547 console.log('BUNDLE_ACTIVE queryBundleEvents throw error, code is: ' + error.code + ',message is: ' + error.message); 548 } 549 ``` 550 551## usageStatistics.queryCurrentBundleEvents 552 553queryCurrentBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void 554 555通过指定起始和结束时间查询当前应用的事件集合,使用Callback形式返回。 556 557**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 558 559**系统API**:此接口为系统接口。 560 561**参数**: 562 563| 参数名 | 类型 | 必填 | 说明 | 564| -------- | ---------------------------------------- | ---- | --------------------------------------- | 565| begin | number | 是 | 起始时间,以毫秒为单位。 | 566| end | number | 是 | 结束时间,以毫秒为单位。 | 567| callback | AsyncCallback<Array<[BundleEvents](#bundleevents)>> | 是 | 指定的callback回调方法。返回指定起始和结束时间查询当前应用的事件集合。 | 568 569**错误码**: 570 571以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 572 573| 错误码ID | 错误信息 | 574| ---------- | ---------------------------- | 575| 10000001 | Memory operation failed. | 576| 10000002 | Parcel operation failed. | 577| 10000003 | System service operation failed. | 578| 10000004 | IPC failed. | 579| 10000006 | Failed to get the application information. | 580| 10000007 | Failed to get the system time. | 581 582**示例**: 583 584 ```js 585 try{ 586 usageStatistics.queryCurrentBundleEvents(0, 20000000000000, (err, res) => { 587 if (err) { 588 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents callback failed. code is: ' + err.code + ',message is: ' + err.message); 589 } else { 590 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents callback success.'); 591 for (let i = 0; i < res.length; i++) { 592 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents callback number : ' + (i + 1)); 593 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents callback result ' + JSON.stringify(res[i])); 594 } 595 } 596 }); 597 } catch (error) { 598 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents throw error, code is: ' + error.code + ',message is: ' + error.message); 599 } 600 ``` 601 602## usageStatistics.queryCurrentBundleEvents 603 604queryCurrentBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>> 605 606通过指定起始和结束时间查询当前应用的事件集合,使用Promise形式返回。 607 608**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 609 610**系统API**:此接口为系统接口。 611 612**参数**: 613 614| 参数名 | 类型 | 必填 | 说明 | 615| ----- | ------ | ---- | ----- | 616| begin | number | 是 | 起始时间,以毫秒为单位。 | 617| end | number | 是 | 结束时间,以毫秒为单位。 | 618 619**返回值**: 620 621| 类型 | 说明 | 622| ---------------------------------------- | -------------------------------------- | 623| Promise<Array<[BundleEvents](#bundleevents)>> | 指定的Promise回调方法。返回指定起始和结束时间查询当前应用的事件集合。 | 624 625**错误码**: 626 627以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 628 629| 错误码ID | 错误信息 | 630| ---------- | ---------------------------- | 631| 10000001 | Memory operation failed. | 632| 10000002 | Parcel operation failed. | 633| 10000003 | System service operation failed. | 634| 10000004 | IPC failed. | 635| 10000006 | Failed to get the application information. | 636| 10000007 | Failed to get the system time. | 637 638**示例**: 639 640 ```js 641 try{ 642 usageStatistics.queryCurrentBundleEvents(0, 20000000000000).then( res => { 643 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents promise success.'); 644 for (let i = 0; i < res.length; i++) { 645 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents promise number : ' + (i + 1)); 646 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents promise result ' + JSON.stringify(res[i])); 647 } 648 }).catch( err => { 649 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents promise failed. code is: ' + err.code + ',message is: ' + err.message); 650 }); 651 } catch (error) { 652 console.log('BUNDLE_ACTIVE queryCurrentBundleEvents throw error, code is: ' + error.code + ',message is: ' + error.message); 653 } 654 ``` 655 656## usageStatistics.queryModuleUsageRecords 657 658queryModuleUsageRecords(): Promise<Array<HapModuleInfo>> 659 660使用Promise形式返回不超过1000条FA使用记录,FA使用记录由近及远排序。 661 662**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 663 664**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 665 666**系统API**:此接口为系统接口。 667 668**返回值**: 669 670| 类型 | 说明 | 671| ---------------------------------------- | ---------------------------------- | 672| Promise<Array<[HapModuleInfo](#hapmoduleinfo)>> | 指定的Promise回调方法。返回不超过1000条FA使用记录。 | 673 674**错误码**: 675 676以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 677 678| 错误码ID | 错误信息 | 679| ---------- | ---------------------------- | 680| 10000001 | Memory operation failed. | 681| 10000002 | Parcel operation failed. | 682| 10000003 | System service operation failed. | 683| 10000004 | IPC failed. | 684| 10000006 | Failed to get the application information. | 685| 10000007 | Failed to get the system time. | 686 687**示例**: 688 689 ```js 690 // 无maxNum参数调用方式 691 try{ 692 usageStatistics.queryModuleUsageRecords().then( res => { 693 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise succeeded'); 694 for (let i = 0; i < res.length; i++) { 695 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise number : ' + (i + 1)); 696 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise result ' + JSON.stringify(res[i])); 697 } 698 }).catch( err=> { 699 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise failed. code is: ' + err.code + ',message is: ' + err.message); 700 }); 701 } catch (error) { 702 console.log('BUNDLE_ACTIVE queryModuleUsageRecords throw error, code is: ' + error.code + ',message is: ' + error.message); 703 } 704 ``` 705 706## usageStatistics.queryModuleUsageRecords 707 708queryModuleUsageRecords(callback: AsyncCallback<Array<HapModuleInfo>>): void 709 710查询FA使用记录。使用CallBack形式返回数量不超过1000条FA使用记录(FA记录按时间由近及远排序)。 711 712**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 713 714**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 715 716**系统API**:此接口为系统接口。 717 718**参数**: 719 720| 参数名 | 类型 | 必填 | 说明 | 721| -------- | ---------------------------------------- | ---- | ----------------------------------- | 722| callback | AsyncCallback<Array<[HapModuleInfo](#hapmoduleinfo)>> | 是 | 指定的CallBack回调方法。返回不超过maxNum条FA使用记录。 | 723 724**错误码**: 725 726以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 727 728| 错误码ID | 错误信息 | 729| ---------- | ---------------------------- | 730| 10000001 | Memory operation failed. | 731| 10000002 | Parcel operation failed. | 732| 10000003 | System service operation failed. | 733| 10000004 | IPC failed. | 734| 10000006 | Failed to get the application information. | 735| 10000007 | Failed to get the system time. | 736 737**示例**: 738 739 ```js 740 try{ 741 usageStatistics.queryModuleUsageRecords((err, res) => { 742 if(err) { 743 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback failed. code is: ' + err.code + ',message is: ' + err.message); 744 } else { 745 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback succeeded.'); 746 for (let i = 0; i < res.length; i++) { 747 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback number : ' + (i + 1)); 748 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback result ' + JSON.stringify(res[i])); 749 } 750 } 751 }); 752 } catch (error) { 753 console.log('BUNDLE_ACTIVE queryModuleUsageRecords throw error, code is: ' + error.code + ',message is: ' + error.message); 754 } 755 ``` 756 757## usageStatistics.queryModuleUsageRecords 758 759queryModuleUsageRecords(maxNum: number): Promise<Array<HapModuleInfo>> 760 761据maxNum,查询FA使用记录,使用Promise形式返回不超过maxNum条FA使用记录,FA使用记录由近及远排序,maxNum最大为1000。 762 763**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 764 765**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 766 767**系统API**:此接口为系统接口。 768 769**参数**: 770 771| 参数名 | 类型 | 必填 | 说明 | 772| ------ | ------ | ---- | ---------------------------------- | 773| maxNum | number | 是 | 返回条目的最大数量,最多支持1000条。 | 774 775**返回值**: 776 777| 类型 | 说明 | 778| ---------------------------------------- | ---------------------------------- | 779| Promise<Array<[HapModuleInfo](#hapmoduleinfo)>> | 指定的Promise回调方法。返回不超过maxNum条FA使用记录。 | 780 781**错误码**: 782 783以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 784 785| 错误码ID | 错误信息 | 786| ---------- | ---------------------------- | 787| 10000001 | Memory operation failed. | 788| 10000002 | Parcel operation failed. | 789| 10000003 | System service operation failed. | 790| 10000004 | IPC failed. | 791| 10000006 | Failed to get the application information. | 792| 10000007 | Failed to get the system time. | 793 794**示例**: 795 796 ```js 797 try{ 798 usageStatistics.queryModuleUsageRecords(1000).then( res => { 799 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise succeeded'); 800 for (let i = 0; i < res.length; i++) { 801 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise number : ' + (i + 1)); 802 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise result ' + JSON.stringify(res[i])); 803 } 804 }).catch( err=> { 805 console.log('BUNDLE_ACTIVE queryModuleUsageRecords promise failed. code is: ' + err.code + ',message is: ' + err.message); 806 }); 807 } catch (error) { 808 console.log('BUNDLE_ACTIVE queryModuleUsageRecords throw error, code is: ' + error.code + ',message is: ' + error.message); 809 } 810 ``` 811 812## usageStatistics.queryModuleUsageRecords 813 814queryModuleUsageRecords(maxNum: number, callback: AsyncCallback<Array<HapModuleInfo>>): void 815 816查询FA使用记录。使用CallBack形式返回数量最大不超过maxNum设置的值,FA使用记录由近及远排序,maxNum最大为1000。 817 818**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 819 820**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 821 822**系统API**:此接口为系统接口。 823 824**参数**: 825 826| 参数名 | 类型 | 必填 | 说明 | 827| -------- | ---------------------------------------- | ---- | ----------------------------------- | 828| maxNum | number | 是 | 返回FA记录的最大数量,maxNum最大为1000。| 829| callback | AsyncCallback<Array<[HapModuleInfo](#hapmoduleinfo)>> | 是 | 指定的CallBack回调方法。返回不超过maxNum条FA使用记录。 | 830 831**错误码**: 832 833以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 834 835| 错误码ID | 错误信息 | 836| ---------- | ---------------------------- | 837| 10000001 | Memory operation failed. | 838| 10000002 | Parcel operation failed. | 839| 10000003 | System service operation failed. | 840| 10000004 | IPC failed. | 841| 10000006 | Failed to get the application information. | 842| 10000007 | Failed to get the system time. | 843 844**示例**: 845 846 ```js 847 try{ 848 usageStatistics.queryModuleUsageRecords(1000, (err, res) => { 849 if(err) { 850 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback failed. code is: ' + err.code + ',message is: ' + err.message); 851 } else { 852 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback succeeded.'); 853 for (let i = 0; i < res.length; i++) { 854 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback number : ' + (i + 1)); 855 console.log('BUNDLE_ACTIVE queryModuleUsageRecords callback result ' + JSON.stringify(res[i])); 856 } 857 } 858 }); 859 } catch (error) { 860 console.log('BUNDLE_ACTIVE queryModuleUsageRecords throw error, code is: ' + error.code + ',message is: ' + error.message); 861 } 862 ``` 863 864## usageStatistics.queryAppGroup 865 866queryAppGroup(bundleName : string): Promise<number> 867 868查询指定bundleName的应用的优先级分组。使用Promise形式返回其应用分组结果。 869 870**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 871 872**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 873 874**系统API**:此接口为系统接口。 875 876**参数**: 877 878| 参数名 | 类型 | 必填 | 说明 | 879| ---------- | ------ | ---- | ---------------------------------------- | 880| bundleName | string | 是 | 查询指定bundleName的应用的优先级分组。 | 881 882**返回值**: 883 884| 类型 | 说明 | 885| --------------- | --------------------------- | 886| Promise<number> | 指定的Promise回调方法。返回查询的应用分组结果。 | 887 888**错误码**: 889 890以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 891 892| 错误码ID | 错误信息 | 893| ---------- | ---------------------------- | 894| 10000001 | Memory operation failed. | 895| 10000002 | Parcel operation failed. | 896| 10000003 | System service operation failed. | 897| 10000004 | IPC failed. | 898| 10000005 | Application is not installed. | 899| 10000006 | Failed to get the application information. | 900| 10100002 | Failed to get the application group information. | 901 902**示例**: 903 904```javascript 905//有bundleName的promise 906 let bundleName = "com.ohos.camera"; 907 try{ 908 usageStatistics.queryAppGroup(bundleName).then( res => { 909 console.log('BUNDLE_ACTIVE queryAppGroup promise succeeded. result: ' + JSON.stringify(res)); 910 }).catch( err => { 911 console.log('BUNDLE_ACTIVE queryAppGroup promise failed. code is: ' + err.code + ',message is: ' + err.message); 912 }); 913 } catch (error) { 914 console.log('BUNDLE_ACTIVE queryAppGroup throw error, code is: ' + error.code + ',message is: ' + error.message); 915 } 916``` 917 918## usageStatistics.queryAppGroup 919 920queryAppGroup(bundleName : string, callback: AsyncCallback<number>): void 921 922查询指定bundleName对应应用的分组。使用callback形式返回其应用分组。 923 924**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 925 926**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 927 928**系统API**:此接口为系统接口。 929 930**参数**: 931 932| 参数名 | 类型 | 必填 | 说明 | 933| ---------- | --------------------- | ---- | ---------------------------------------- | 934| bundleName | string | 是 | 查询指定bundleName对应应用的分组。 | 935| callback | AsyncCallback<number> | 是 | 指定的CallBack回调方法。返回制指定bundleName的应用分组。| 936 937**错误码**: 938 939以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 940 941| 错误码ID | 错误信息 | 942| ---------- | ---------------------------- | 943| 10000001 | Memory operation failed. | 944| 10000002 | Parcel operation failed. | 945| 10000003 | System service operation failed. | 946| 10000004 | IPC failed. | 947| 10000005 | Application is not installed. | 948| 10000006 | Failed to get the application information. | 949| 10100002 | Failed to get the application group information. | 950 951**示例**: 952 953```javascript 954 let bundleName = "com.ohos.camera"; 955 try{ 956 usageStatistics.queryAppGroup(bundleName, (err, res) => { 957 if(err) { 958 console.log('BUNDLE_ACTIVE queryAppGroup callback failed. code is: ' + err.code + ',message is: ' + err.message); 959 } else { 960 console.log('BUNDLE_ACTIVE queryAppGroup callback succeeded. result: ' + JSON.stringify(res)); 961 } 962 }); 963 } catch (error) { 964 console.log('BUNDLE_ACTIVE queryAppGroup throw error, code is: ' + error.code + ',message is: ' + error.message); 965 } 966``` 967 968## usageStatistics.setAppGroup 969 970setAppGroup(bundleName: string, newGroup: GroupType): Promise<void> 971 972将指定bundleName的应用的分组设置为newGroup,使用Promise形式返回设置是否成功。 973 974**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 975 976**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 977 978**系统API**:此接口为系统接口。 979 980**参数**: 981 982| 参数名 | 类型 | 必填 | 说明 | 983| ---------- | --------- | ---- | ---- | 984| bundleName | string | 是 | 应用名称 | 985| newGroup | [GroupType](#grouptype) | 是 | 应用分组 | 986 987**错误码**: 988 989以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 990 991| 错误码ID | 错误信息 | 992| ---------- | ---------------------------- | 993| 10000001 | Memory operation failed. | 994| 10000002 | Parcel operation failed. | 995| 10000003 | System service operation failed. | 996| 10000004 | IPC failed. | 997| 10000006 | Failed to get the application information. | 998| 10100001 | Repeated operation on the application group. | 999 1000**返回值**: 1001 1002| 类型 | 说明 | 1003| ------------- | ------------------------- | 1004| Promise<void> | 指定的Promise回调方法。返回本次设置是否成功 | 1005 1006**示例**: 1007 1008```javascript 1009 let bundleName = "com.example.deviceUsageStatistics"; 1010 let newGroup = usageStatistics.GroupType.DAILY_GROUP; 1011 1012 try{ 1013 usageStatistics.setAppGroup(bundleName, newGroup).then( () => { 1014 console.log('BUNDLE_ACTIVE setAppGroup promise succeeded.'); 1015 }).catch( err => { 1016 console.log('BUNDLE_ACTIVE setAppGroup promise failed. code is: ' + err.code + ',message is: ' + err.message); 1017 }); 1018 } catch (error) { 1019 console.log('BUNDLE_ACTIVE setAppGroup throw error, code is: ' + error.code + ',message is: ' + error.message); 1020 } 1021``` 1022 1023## usageStatistics.setAppGroup 1024 1025setAppGroup(bundleName: string, newGroup: GroupType, callback: AsyncCallback<void>): void 1026 1027将指定bundleName的应用的分组设置为newGroup,使用CallBack形式返回设置是否成功。 1028 1029**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1030 1031**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1032 1033**系统API**:此接口为系统接口。 1034 1035**参数**: 1036 1037| 参数名 | 类型 | 必填 | 说明 | 1038| ---------- | ------------------- | ---- | ------------------------- | 1039| bundleName | string | 是 | 应用名称 | 1040| newGroup | [GroupType](#grouptype) | 是 | 应用分组 | 1041| callback | AsyncCallback<void> | 是 | 指定的CallBack回调方法。返回设置是否成功。 | 1042 1043**错误码**: 1044 1045以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1046 1047| 错误码ID | 错误信息 | 1048| ---------- | ---------------------------- | 1049| 10000001 | Memory operation failed. | 1050| 10000002 | Parcel operation failed. | 1051| 10000003 | System service operation failed. | 1052| 10000004 | IPC failed. | 1053| 10000006 | Failed to get the application information. | 1054| 10100001 | Repeated operation on the application group. | 1055 1056**示例**: 1057 1058```javascript 1059 let bundleName = "com.example.deviceUsageStatistics"; 1060 let newGroup = usageStatistics.GroupType.DAILY_GROUP; 1061 1062 try{ 1063 usageStatistics.setAppGroup(bundleName, newGroup, (err) => { 1064 if(err) { 1065 console.log('BUNDLE_ACTIVE setAppGroup callback failed. code is: ' + err.code + ',message is: ' + err.message); 1066 } else { 1067 console.log('BUNDLE_ACTIVE setAppGroup callback succeeded.'); 1068 } 1069 }); 1070 } catch (error) { 1071 console.log('BUNDLE_ACTIVE setAppGroup throw error, code is: ' + error.code + ',message is: ' + error.message); 1072 } 1073``` 1074 1075## usageStatistics.registerAppGroupCallBack 1076 1077registerAppGroupCallBack(groupCallback: Callback<AppGroupCallbackInfo>): Promise<void> 1078 1079应用注册分组变化监听,待用户名下的某个应用分组发生变化时,通过callback形式向所有已注册分组变化监听的应用返回[AppGroupCallbackInfo](#appgroupcallbackinfo)信息。使用Promise形式返回注册是否成功。 1080 1081**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1082 1083**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1084 1085**系统API**:此接口为系统接口。 1086 1087**参数**: 1088 1089| 参数名 | 类型 | 必填 | 说明 | 1090| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 1091| callback | Callback<[AppGroupCallbackInfo](#appgroupcallbackinfo)> | 是 | 指定的callback函数,返回应用分组变化的信息 | 1092 1093**错误码**: 1094 1095以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1096 1097| 错误码ID | 错误信息 | 1098| ---------- | ---------------------------- | 1099| 10000001 | Memory operation failed. | 1100| 10000002 | Parcel operation failed. | 1101| 10000003 | System service operation failed. | 1102| 10000004 | IPC failed. | 1103| 10100001 | Repeated operation on the application group. | 1104 1105**返回值**: 1106 1107| 类型 | 说明 | 1108| ------------- | ----------------------- | 1109| Promise<void> | 指定的Promise回调方法。返回注册监听是否成功 | 1110 1111**示例**: 1112 1113```javascript 1114 let onBundleGroupChanged = (res) =>{ 1115 console.log('BUNDLE_ACTIVE registerAppGroupCallBack RegisterGroupCallBack callback success.'); 1116 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result appOldGroup is : ' + res.appOldGroup); 1117 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result appNewGroup is : ' + res.appNewGroup); 1118 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result changeReason is : ' + res.changeReason); 1119 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result userId is : ' + res.userId); 1120 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result bundleName is : ' + res.bundleName); 1121 }; 1122 try{ 1123 usageStatistics.registerAppGroupCallBack(onBundleGroupChanged).then( () => { 1124 console.log('BUNDLE_ACTIVE registerAppGroupCallBack promise succeeded.'); 1125 }).catch( err => { 1126 console.log('BUNDLE_ACTIVE registerAppGroupCallBack promise failed. code is: ' + err.code + ',message is: ' + err.message); 1127 }); 1128 } catch (error) { 1129 console.log('BUNDLE_ACTIVE registerAppGroupCallBack throw error, code is: ' + error.code + ',message is: ' + error.message); 1130 } 1131``` 1132 1133## usageStatistics.registerAppGroupCallBack 1134 1135registerAppGroupCallBack(groupCallback: Callback<AppGroupCallbackInfo>, callback: AsyncCallback<void>): void 1136 1137应用注册分组变化监听,待用户名下的某个应用分组发生变化时,通过callback形式向所有已注册分组变化监听的应用返回[AppGroupCallbackInfo](#appgroupcallbackinfo)信息。使用异步callback形式返回注册监听是否成功。 1138 1139**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1140 1141**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1142 1143**系统API**:此接口为系统接口。 1144 1145**参数**: 1146 1147| 参数名 | 类型 | 必填 | 说明 | 1148| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1149| groupCallback | Callback<[AppGroupCallbackInfo](#appgroupcallbackinfo)> | 是 | 指定的callback函数,返回应用分组变化的信息 | 1150| callback | AsyncCallback<void> | 是 | 指定的异步callback函数,返回注册监听是否成功 | 1151 1152**错误码**: 1153 1154以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1155 1156| 错误码ID | 错误信息 | 1157| ---------- | ---------------------------- | 1158| 10000001 | Memory operation failed. | 1159| 10000002 | Parcel operation failed. | 1160| 10000003 | System service operation failed. | 1161| 10000004 | IPC failed. | 1162| 10100001 | Repeated operation on the application group. | 1163 1164 1165**示例**: 1166 1167```javascript 1168 // @ts-nocheck 1169 let onBundleGroupChanged = (err, res) =>{ 1170 console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.'); 1171 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result appOldGroup is : ' + res.appOldGroup); 1172 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result appNewGroup is : ' + res.appNewGroup); 1173 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result changeReason is : ' + res.changeReason); 1174 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result userId is : ' + res.userId); 1175 console.log('BUNDLE_ACTIVE registerAppGroupCallBack result bundleName is : ' + res.bundleName); 1176 }; 1177 try{ 1178 usageStatistics.registerAppGroupCallBack(onBundleGroupChanged, err => { 1179 if(err) { 1180 console.log('BUNDLE_ACTIVE registerAppGroupCallBack callback failed. code is: ' + err.code + ',message is: ' + err.message); 1181 } else { 1182 console.log('BUNDLE_ACTIVE registerAppGroupCallBack callback success.'); 1183 } 1184 }); 1185 } catch (error) { 1186 console.log('BUNDLE_ACTIVE registerAppGroupCallBack throw error, code is: ' + error.code + ',message is: ' + error.message); 1187 } 1188``` 1189 1190## usageStatistics.unregisterAppGroupCallBack 1191 1192unregisterAppGroupCallBack(): Promise<void> 1193 1194应用解除分组变化监听,解除通过调用注册接口生成的监听。使用Promise形式返回解除监听是否成功。 1195 1196**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1197 1198**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1199 1200**系统API**:此接口为系统接口。 1201 1202**返回值**: 1203 1204| 类型 | 说明 | 1205| ------------- | ------------------------ | 1206| Promise<void> | 指定的Promise回调方法。返回解除监听是否成功 | 1207 1208**错误码**: 1209 1210以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1211 1212| 错误码ID | 错误信息 | 1213| ---------- | ---------------------------- | 1214| 10000001 | Memory operation failed. | 1215| 10000002 | Parcel operation failed. | 1216| 10000003 | System service operation failed. | 1217| 10000004 | IPC failed. | 1218| 10100001 | Repeated operation on the application group. | 1219 1220**示例**: 1221 1222```javascript 1223 try{ 1224 usageStatistics.unregisterAppGroupCallBack().then( () => { 1225 console.log('BUNDLE_ACTIVE unregisterAppGroupCallBack promise succeeded.'); 1226 }).catch( err => { 1227 console.log('BUNDLE_ACTIVE unregisterAppGroupCallBack promise failed. code is: ' + err.code + ',message is: ' + err.message); 1228 }); 1229 } catch (error) { 1230 console.log('BUNDLE_ACTIVE unregisterAppGroupCallBack throw error, code is: ' + error.code + ',message is: ' + error.message); 1231 } 1232``` 1233 1234## usageStatistics.unregisterAppGroupCallBack 1235 1236unregisterAppGroupCallBack(callback: AsyncCallback<void>): void; 1237 1238应用解除分组变化监听,解除通过调用注册接口生成的监听。使用异步callback形式返回解除监听是否成功。 1239 1240**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1241 1242**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1243 1244**系统API**:此接口为系统接口。 1245 1246**参数**: 1247 1248| 参数名 | 类型 | 必填 | 说明 | 1249| -------- | ------------------- | ---- | -------------- | 1250| callback | AsyncCallback<void> | 是 | 解除监听是否成功的异步回调函数 | 1251 1252**错误码**: 1253 1254以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1255 1256| 错误码ID | 错误信息 | 1257| ---------- | ---------------------------- | 1258| 10000001 | Memory operation failed. | 1259| 10000002 | Parcel operation failed. | 1260| 10000003 | System service operation failed. | 1261| 10000004 | IPC failed. | 1262| 10100001 | Repeated operation on the application group. | 1263 1264**示例**: 1265 1266```javascript 1267 try{ 1268 usageStatistics.unregisterAppGroupCallBack(err => { 1269 if(err) { 1270 console.log('BUNDLE_ACTIVE unregisterAppGroupCallBack callback failed. code is: ' + err.code + ',message is: ' + err.message); 1271 } else { 1272 console.log('BUNDLE_ACTIVE unregisterAppGroupCallBack callback success.'); 1273 } 1274 }); 1275 } catch (error) { 1276 console.log('BUNDLE_ACTIVE unregisterAppGroupCallBack throw error, code is: ' + error.code + ',message is: ' + error.message); 1277 } 1278``` 1279 1280## usageStatistics.queryDeviceEventStats 1281 1282queryDeviceEventStats(begin: number, end: number): Promise<Array<DeviceEventStats>> 1283 1284通过指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息,使用Promise形式返回。 1285 1286**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1287 1288**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 1289 1290**系统API**:此接口为系统接口。 1291 1292**参数**: 1293 1294| 参数名 | 类型 | 必填 | 说明 | 1295| ----- | ------ | ---- | ----- | 1296| begin | number | 是 | 起始时间,以毫秒为单位。 | 1297| end | number | 是 | 结束时间,以毫秒为单位。 | 1298 1299**返回值**: 1300 1301| 类型 | 说明 | 1302| ---------------------------------------- | ---------------------------------------- | 1303| Promise<Array<[DeviceEventStats](#deviceeventstats)>> | 指定的Promise回调方法。返回指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息。 | 1304 1305**错误码**: 1306 1307以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1308 1309| 错误码ID | 错误信息 | 1310| ---------- | ---------------------------- | 1311| 10000001 | Memory operation failed. | 1312| 10000002 | Parcel operation failed. | 1313| 10000003 | System service operation failed. | 1314| 10000004 | IPC failed. | 1315| 10000006 | Failed to get the application information. | 1316| 10000007 | Failed to get the system time. | 1317 1318**示例**: 1319 1320 ```js 1321 try{ 1322 usageStatistics.queryDeviceEventStats(0, 20000000000000).then( res => { 1323 console.log('BUNDLE_ACTIVE queryDeviceEventStates promise success.'); 1324 console.log('BUNDLE_ACTIVE queryDeviceEventStates promise result ' + JSON.stringify(res)); 1325 }).catch( err=> { 1326 console.log('BUNDLE_ACTIVE queryDeviceEventStats promise failed. code is: ' + err.code + ',message is: ' + err.message); 1327 }); 1328 } catch (error) { 1329 console.log('BUNDLE_ACTIVE queryDeviceEventStats throw error, code is: ' + error.code + ',message is: ' + error.message); 1330 } 1331 ``` 1332 1333## usageStatistics.queryDeviceEventStats 1334 1335queryDeviceEventStats(begin: number, end: number, callback: AsyncCallback<Array<DeviceEventStats>>): void 1336 1337通过指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息,使用Callback形式返回。 1338 1339**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1340 1341**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 1342 1343**系统API**:此接口为系统接口。 1344 1345**参数**: 1346 1347| 参数名 | 类型 | 必填 | 说明 | 1348| -------- | ---------------------------------------- | ---- | ---------------------------------------- | 1349| begin | number | 是 | 起始时间,以毫秒为单位。 | 1350| end | number | 是 | 结束时间,以毫秒为单位。 | 1351| callback | AsyncCallback<Array<[DeviceEventStats](#deviceeventstats)>> | 是 | 指定的callback回调方法。返回指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息。 | 1352 1353**错误码**: 1354 1355以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1356 1357| 错误码ID | 错误信息 | 1358| ---------- | ---------------------------- | 1359| 10000001 | Memory operation failed. | 1360| 10000002 | Parcel operation failed. | 1361| 10000003 | System service operation failed. | 1362| 10000004 | IPC failed. | 1363| 10000006 | Failed to get the application information. | 1364| 10000007 | Failed to get the system time. | 1365 1366**示例**: 1367 1368 ```js 1369 try{ 1370 usageStatistics.queryDeviceEventStats(0, 20000000000000, (err, res) => { 1371 if(err) { 1372 console.log('BUNDLE_ACTIVE queryDeviceEventStats callback failed. code is: ' + err.code + ',message is: ' + err.message); 1373 } else { 1374 console.log('BUNDLE_ACTIVE queryDeviceEventStats callback success.'); 1375 console.log('BUNDLE_ACTIVE queryDeviceEventStats callback result ' + JSON.stringify(res)); 1376 } 1377 }); 1378 } catch (error) { 1379 console.log('BUNDLE_ACTIVE queryDeviceEventStats throw error, code is: ' + error.code + ',message is: ' + error.message); 1380 } 1381 ``` 1382 1383## usageStatistics.queryNotificationEventStats 1384 1385queryNotificationEventStats(begin: number, end: number): Promise<Array<DeviceEventStats>> 1386 1387通过指定起始和结束时间查询所有应用的通知次数信息,使用Promise形式返回。 1388 1389**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1390 1391**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 1392 1393**系统API**:此接口为系统接口。 1394 1395**参数**: 1396 1397| 参数名 | 类型 | 必填 | 说明 | 1398| ----- | ------ | ---- | ----- | 1399| begin | number | 是 | 起始时间,以毫秒为单位。 | 1400| end | number | 是 | 结束时间,以毫秒为单位。 | 1401 1402**返回值**: 1403 1404| 类型 | 说明 | 1405| ---------------------------------------- | ---------------------------------------- | 1406| Promise<Array<[DeviceEventStats](#deviceeventstats)>> | 指定的Promise回调方法。返回指定起始和结束时间查询所有应用的通知次数信息。 | 1407 1408**错误码**: 1409 1410以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1411 1412| 错误码ID | 错误信息 | 1413| ---------- | ---------------------------- | 1414| 10000001 | Memory operation failed. | 1415| 10000002 | Parcel operation failed. | 1416| 10000003 | System service operation failed. | 1417| 10000004 | IPC failed. | 1418| 10000006 | Failed to get the application information. | 1419| 10000007 | Failed to get the system time. | 1420 1421**示例**: 1422 1423 ```js 1424 try{ 1425 usageStatistics.queryNotificationEventStats(0, 20000000000000).then( res => { 1426 console.log('BUNDLE_ACTIVE queryNotificationEventStats promise success.'); 1427 console.log('BUNDLE_ACTIVE queryNotificationEventStats promise result ' + JSON.stringify(res)); 1428 }).catch( err=> { 1429 console.log('BUNDLE_ACTIVE queryNotificationEventStats promise failed. code is: ' + err.code + ',message is: ' + err.message); 1430 }); 1431 } catch (error) { 1432 console.log('BUNDLE_ACTIVE queryNotificationEventStats throw error, code is: ' + error.code + ',message is: ' + error.message); 1433 } 1434 ``` 1435 1436## usageStatistics.queryNotificationEventStats 1437 1438queryNotificationEventStats(begin: number, end: number, callback: AsyncCallback<Array<DeviceEventStats>>): void 1439 1440通过指定起始和结束时间查询所有应用的通知次数信息,使用Callback形式返回。 1441 1442**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO 1443 1444**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 1445 1446**系统API**:此接口为系统接口。 1447 1448**参数**: 1449 1450| 参数名 | 类型 | 必填 | 说明 | 1451| -------- | ---------------------------------------- | ---- | ---------------------------------------- | 1452| begin | number | 是 | 起始时间,以毫秒为单位。 | 1453| end | number | 是 | 结束时间,以毫秒为单位。 | 1454| callback | AsyncCallback<Array<[DeviceEventStats](#deviceeventstats)>> | 是 | 指定的callback回调方法。返回通过指定起始和结束时间查询所有应用的通知次数信息。 | 1455 1456**错误码**: 1457 1458以下错误码的详细介绍请参见[设备信息使用统计错误码](../errorcodes/errorcode-DeviceUsageStatistics.md)。 1459 1460| 错误码ID | 错误信息 | 1461| ---------- | ---------------------------- | 1462| 10000001 | Memory operation failed. | 1463| 10000002 | Parcel operation failed. | 1464| 10000003 | System service operation failed. | 1465| 10000004 | IPC failed. | 1466| 10000006 | Failed to get the application information. | 1467| 10000007 | Failed to get the system time. | 1468 1469**示例**: 1470 1471 ```js 1472 try{ 1473 usageStatistics.queryNotificationEventStats(0, 20000000000000, (err, res) => { 1474 if(err) { 1475 console.log('BUNDLE_ACTIVE queryNotificationEventStats callback failed. code is: ' + err.code + ',message is: ' + err.message); 1476 } else { 1477 console.log('BUNDLE_ACTIVE queryNotificationEventStats callback success.'); 1478 console.log('BUNDLE_ACTIVE queryNotificationEventStats callback result ' + JSON.stringify(res)); 1479 } 1480 }); 1481 } catch (error) { 1482 console.log('BUNDLE_ACTIVE queryNotificationEventStats throw error, code is: ' + error.code + ',message is: ' + error.message); 1483 } 1484 ``` 1485 1486## HapModuleInfo 1487FA的使用信息的属性集合。 1488 1489**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App 1490 1491**系统API**:此接口为系统接口。 1492 1493| 名称 | 类型 | 必填 | 说明 | 1494| -------------------- | ---------------------------------------- | ---- | ----------------------------- | 1495| deviceId | string | 否 | FA所属deviceId。 | 1496| bundleName | string | 是 | FA所属应用包名。 | 1497| moduleName | string | 是 | FA所属module名。 | 1498| abilityName | string | 否 | FA的MainAbility名。 | 1499| appLabelId | number | 否 | FA的应用labelId。 | 1500| labelId | number | 否 | FA所属module的labelId。 | 1501| descriptionId | number | 否 | FA所属的应用descriptionId。 | 1502| abilityLableId | number | 否 | FA的MainAbility labelId。 | 1503| abilityDescriptionId | number | 否 | FA的MainAbility descriptionId。 | 1504| abilityIconId | number | 否 | FA的MainAbility iconId。 | 1505| launchedCount | number | 是 | FA的启动次数。 | 1506| lastModuleUsedTime | number | 是 | FA的上一次使用时间。 | 1507| formRecords | Array<[HapFormInfo](#hapforminfo)> | 是 | FA中卡片的使用记录。 | 1508 1509## HapFormInfo 1510FA卡片的使用信息的属性集合。 1511 1512**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App 1513 1514**系统API**:此接口为系统接口。 1515 1516| 名称 | 类型 | 必填 | 说明 | 1517| ---------------- | ------ | ---- | ----------- | 1518| formName | string | 是 | 卡片名称。 | 1519| formDimension | number | 是 | 卡片尺寸。 | 1520| formId | number | 是 | 卡片Id。 | 1521| formLastUsedTime | number | 是 | 卡片的上一次点击时间。 | 1522| count | number | 是 | 卡片的点击次数。 | 1523 1524## AppGroupCallbackInfo 1525 1526应用分组变化回调返回的属性集合 1527 1528**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1529 1530**系统API**:此接口为系统接口。 1531 1532| 名称 | 类型 | 必填 | 说明 | 1533| ---------------- | ------ | ---- | ---------------- | 1534| appOldGroup | number | 是 | 变化前的应用分组 | 1535| appNewGroup | number | 是 | 变化后的应用分组 | 1536| userId | number | 是 | 用户id | 1537| changeReason | number | 是 | 分组变化原因 | 1538| bundleName | string | 是 | 应用名称 | 1539 1540## BundleStatsInfo 1541 1542提供应用使用时长的具体信息。 1543 1544### 属性 1545 1546**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App 1547 1548**系统API**:此接口为系统接口。 1549 1550| 名称 | 类型 | 必填 | 说明 | 1551| ------------------------ | ------ | ---- | ---------------------------------------- | 1552| bundleName | string | 否 | 应用包名。 | 1553| abilityPrevAccessTime | number | 否 | 应用最后一次使用的时间。 | 1554| abilityInFgTotalTime | number | 否 | 应用在前台使用的总时间。 | 1555| id | number | 是 | 用户id。 | 1556| abilityPrevSeenTime | number | 否 | 应用最后一次在前台可见的时间。 | 1557| abilitySeenTotalTime | number | 否 | 应用在前台可见的总时间。 | 1558| fgAbilityAccessTotalTime | number | 否 | 应用访问前台的总时间。 | 1559| fgAbilityPrevAccessTime | number | 否 | 应用最后一次访问前台的时间。| 1560| infosBeginTime | number | 否 | BundleActiveInfo对象中第一条应用使用统计的记录时间。 | 1561| infosEndTime | number | 否 | BundleActiveInfo对象中最后一条应用使用统计的记录时间。 | 1562 1563## BundleEvents 1564 1565提供应用事件的具体信息。 1566 1567**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App 1568 1569**系统API**:此接口为系统接口。 1570 1571| 名称 | 类型 | 必填 | 说明 | 1572| --------------------- | ------ | ---- | ---------------------------------------- | 1573| bundleName | string | 否 | 应用包名。 | 1574| eventId | number | 否 | 应用事件类型。 | 1575| eventOccurredTime | number | 否 | 应用事件发生的时间戳。 | 1576| appGroup | number | 否 | 应用程序的使用优先级组。| 1577| indexOfLink | string | 否 | 快捷方式id。| 1578| nameOfClass | string | 否 | 类名。| 1579 1580## BundleStatsMap 1581 1582提供应用使用时长的具体信息。 1583 1584**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App 1585 1586**系统API**:此接口为系统接口。 1587 1588| 参数名 | 类型 | 必填 | 说明 | 1589| ------------------------------ | ---------------------------------------- | ---- | -------------- | 1590| [key: string]: BundleStatsInfo | [key: string]: [BundleStatsInfo](#bundlestatsinfo) | 是 | 不同应用的使用时长统计信息。 | 1591 1592## DeviceEventStats 1593 1594提供通知、系统事件的统计信息。 1595 1596**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App 1597 1598**系统API**:此接口为系统接口。 1599 1600| 名称 | 类型 | 必填 | 说明 | 1601| ------- | ------ | ---- | ----------------- | 1602| name | string | 是 | 通知应用包名或者系统事件名。 | 1603| eventId | number | 是 | 通知、系统事件类型。 | 1604| count | number | 是 | 应用通知次数或者系统事件触发次数。 | 1605 1606## IntervalType 1607 1608提供应用使用时长的查询类型。 1609 1610**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App 1611 1612**系统API**:此接口为系统接口。 1613 1614| 名称 | 值 | 说明 | 1615| ------------ | ---- | ---------------------------------------- | 1616| BY_OPTIMIZED | 0 | 表示系统自行判断最合适的查询类型(天、周、月、年)去查询指定时间段间隔的应用使用时长信息。 | 1617| BY_DAILY | 1 | 表示系统按照天去查询指定时间段间隔的应用使用时长信息。 | 1618| BY_WEEKLY | 2 | 表示系统按照周去查询指定时间段间隔的应用使用时长信息。 | 1619| BY_MONTHLY | 3 | 表示系统按照月去查询指定时间段间隔的应用使用时长信息。 | 1620| BY_ANNUALLY | 4 | 表示系统按照年去查询指定时间段间隔的应用使用时长信息。 | 1621 1622## GroupType 1623 1624提供应用分组的设置类型。 1625 1626**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.AppGroup 1627 1628**系统API**:此接口为系统接口。 1629 1630| 名称 | 值 | 说明 | 1631| ------------------ | ---- | ----------------- | 1632| ALIVE_GROUP | 10 | 活跃分组。 | 1633| DAILY_GROUP | 20 | 经常使用,但当前并未在活跃态。 | 1634| FIXED_GROUP | 30 | 常用分组,定期使用,但不是每天使用。 | 1635| RARE_GROUP | 40 | 极少使用分组,不经常使用。 | 1636| LIMITED_GROUP | 50 | 受限使用分组。 | 1637| NEVER_GROUP | 60 | 从未使用分组,安装但是从未运行过。 |