• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.bundleState (设备使用信息统计)
2
3本模块提供设备使用信息统计能力。
4
5设备使用信息统计,系统应用可调用接口实现如下功能:
6
7- 查询设备上各应用在不同时间段的使用时长、各应用的事件(前台、后台、长时任务开始、长时任务结束)信息及各应用的通知次数信息。
8- 查询应用分组信息(仅限自身应用)。
9- 查询应用空闲状态(其他应用和自身应用)。
10
11三方应用可调用接口实现如下功能:
12
13- 查询应用空闲状态(仅限自身应用)。
14- 查询应用分组信息(仅限自身应用)。
15- 查询应用事件(仅限自身应用)。
16
17> **说明:**
18>
19> 从API version9开始,该接口不再维护,推荐使用新接口[@ohos.resourceschedule.usageStatistics(设备使用信息统计)](js-apis-resourceschedule-deviceUsageStatistics.md)
20>
21> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
22>
23
24
25## 导入模块
26
27```js
28import bundleState from '@ohos.bundleState'
29```
30
31## bundleState.isIdleState
32
33isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void
34
35判断指定bundleName的应用当前是否是空闲状态,三方应用只能查询自身的空闲状态,查询其他应用空闲状态,需要申请权限ohos.permission.BUNDLE_ACTIVE_INFO,使用Callback形式返回。
36
37**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
38
39**参数**:
40
41| 参数名        | 类型                           | 必填   | 说明                                       |
42| ---------- | ---------------------------- | ---- | ---------------------------------------- |
43| bundleName | string                       | 是    | 应用的bundleName。                           |
44| callback   | AsyncCallback<boolean> | 是    | 指定的callback回调方法。如果指定的bundleName有效,则返回指定bundleName的应用当前是否是空闲状态;否则返回null。 |
45
46**示例**:
47
48```ts
49import { BusinessError } from '@ohos.base';
50
51bundleState.isIdleState("com.ohos.camera", (err: BusinessError, res: boolean) => {
52  if (err) {
53    console.error('BUNDLE_ACTIVE isIdleState callback failed, because: ' + err.code);
54  } else {
55    console.log('BUNDLE_ACTIVE isIdleState callback succeeded, result: ' + JSON.stringify(res));
56  }
57});
58```
59
60## bundleState.isIdleState
61
62isIdleState(bundleName: string): Promise<boolean>
63
64判断指定bundleName的应用当前是否是空闲状态,三方应用只能查询自身的空闲状态,查询其他应用空闲状态,需要申请权限ohos.permission.BUNDLE_ACTIVE_INFO,使用Promise形式返回。
65
66**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
67
68**参数**:
69
70| 参数名        | 类型     | 必填   | 说明             |
71| ---------- | ------ | ---- | -------------- |
72| bundleName | string | 是    | 应用的bundleName。 |
73
74**返回值**:
75
76| 类型                     | 说明                                       |
77| ---------------------- | ---------------------------------------- |
78| Promise<boolean> | 指定的Promise回调方法。如果指定的bundleName有效,则返回指定bundleName的应用当前是否是空闲状态;否则返回null。 |
79
80**示例**:
81
82```ts
83import { BusinessError } from '@ohos.base';
84
85bundleState.isIdleState("com.ohos.camera").then((res: boolean) => {
86  console.log('BUNDLE_ACTIVE isIdleState promise succeeded, result: ' + JSON.stringify(res));
87}).catch((err: BusinessError) => {
88  console.error('BUNDLE_ACTIVE isIdleState promise failed, because: ' + err.code);
89});
90```
91
92## bundleState.queryAppUsagePriorityGroup
93
94queryAppUsagePriorityGroup(): Promise<number>
95
96查询当前应用的优先级分组。使用Promise形式返回其应用分组。
97
98**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
99
100**返回值**:
101
102| 类型              | 说明                          |
103| --------------- | --------------------------- |
104| Promise<number> | 指定的Promise回调方法。返回查询的应用分组结果。 |
105
106**示例**:
107
108```ts
109import { BusinessError } from '@ohos.base';
110
111bundleState.queryAppUsagePriorityGroup().then((res: number) => {
112  console.log('BUNDLE_ACTIVE QueryPackageGroup promise succeeded. result: ' + JSON.stringify(res));
113}).catch((err: BusinessError) => {
114  console.error('BUNDLE_ACTIVE QueryPackageGroup promise failed. because: ' + err.code);
115});
116```
117
118## bundleState.queryAppUsagePriorityGroup
119
120queryAppUsagePriorityGroup(callback: AsyncCallback<number>): void
121
122查询当前应用的优先级分组。使用callback形式返回其应用分组。
123
124**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
125
126**参数**:
127
128| 参数名      | 类型                    | 必填   | 说明                         |
129| -------- | --------------------- | ---- | -------------------------- |
130| callback | AsyncCallback<number> | 是    | 指定的CallBack回调方法。返回查询的应用分组。 |
131
132**示例**:
133
134```ts
135import { BusinessError } from '@ohos.base';
136
137bundleState.queryAppUsagePriorityGroup((err: BusinessError, res: number) => {
138  if(err) {
139    console.error('BUNDLE_ACTIVE QueryPackageGroup callback failed. because: ' + err.code);
140  } else {
141    console.log('BUNDLE_ACTIVE QueryPackageGroup callback succeeded. result: ' + JSON.stringify(res));
142  }
143});
144```
145
146## bundleState.queryBundleStateInfos
147
148queryBundleStateInfos(begin: number, end: number, callback: AsyncCallback<BundleActiveInfoResponse>): void
149
150通过指定起始和结束时间查询应用使用时长统计信息,使用Callback形式返回。
151
152**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
153
154**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
155
156**系统API**:此接口为系统接口,三方应用不支持调用。
157
158**参数**:
159
160| 参数名      | 类型                                       | 必填   | 说明                                      |
161| -------- | ---------------------------------------- | ---- | --------------------------------------- |
162| begin    | number                                   | 是    | 起始时间,单位毫秒。                                   |
163| end      | number                                   | 是    | 结束时间,单位毫秒。                                   |
164| callback | AsyncCallback<[BundleActiveInfoResponse](#bundleactiveinforesponse)> | 是    | 指定的callback回调方法。返回指定起始和结束时间内应用使用时长统计信息。 |
165
166**示例**:
167
168```ts
169import { BusinessError } from '@ohos.base';
170
171bundleState.queryBundleStateInfos(0, 20000000000000, (err: BusinessError ,
172  res: bundleState.BundleActiveInfoResponse ) => {
173  if (err) {
174    console.error('BUNDLE_ACTIVE queryBundleStateInfos callback failed, because: ' + err.code);
175  } else {
176    console.log('BUNDLE_ACTIVE queryBundleStateInfos callback success.');
177    console.log('BUNDLE_ACTIVE queryBundleStateInfos callback result ' + JSON.stringify(res));
178  }
179});
180```
181
182## bundleState.queryBundleStateInfos
183
184queryBundleStateInfos(begin: number, end: number): Promise<BundleActiveInfoResponse>
185
186通过指定起始和结束时间查询应用使用时长统计信息,使用Promise形式返回。
187
188**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
189
190**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
191
192**系统API**:此接口为系统接口,三方应用不支持调用。
193
194**参数**:
195
196| 参数名   | 类型     | 必填   | 说明    |
197| ----- | ------ | ---- | ----- |
198| begin | number | 是    | 起始时间,单位毫秒。 |
199| end   | number | 是    | 结束时间,单位毫秒。 |
200
201**返回值**:
202
203| 类型                                       | 说明                                     |
204| ---------------------------------------- | -------------------------------------- |
205| Promise<[BundleActiveInfoResponse](#bundleactiveinforesponse)> | 指定的Promise回调方法。返回指定起始和结束时间内应用使用时长统计信息。 |
206
207**示例**:
208
209```ts
210import { BusinessError } from '@ohos.base';
211
212bundleState.queryBundleStateInfos(0, 20000000000000).then((res: bundleState.BundleActiveInfoResponse) => {
213  console.log('BUNDLE_ACTIVE queryBundleStateInfos promise success.');
214  console.log('BUNDLE_ACTIVE queryBundleStateInfos promise result ' + JSON.stringify(res));
215}).catch((err: BusinessError) => {
216  console.error('BUNDLE_ACTIVE queryBundleStateInfos promise failed, because: ' + err.code);
217});
218```
219
220## bundleState.queryBundleStateInfoByInterval
221
222queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStateInfo>>): void
223
224通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,使用Callback形式返回。
225
226**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
227
228**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
229
230**系统API**:此接口为系统接口,三方应用不支持调用。
231
232**参数**:
233
234| 参数名        | 类型                                       | 必填   | 说明                                       |
235| ---------- | ---------------------------------------- | ---- | ---------------------------------------- |
236| byInterval | [IntervalType](#intervaltype)            | 是    | 查询类型。                                    |
237| begin      | number                                   | 是    | 起始时间,单位毫秒。                                    |
238| end        | number                                   | 是    | 结束时间,单位毫秒。                                    |
239| callback   | AsyncCallback<Array<[BundleStateInfo](#bundlestateinfo)>> | 是    | 指定的callback回调方法。返回指定时间段间隔(天、周、月、年)查询应用使用时长统计信息。 |
240
241**示例**:
242
243```ts
244import { BusinessError } from '@ohos.base';
245
246bundleState.queryBundleStateInfoByInterval(bundleState.IntervalType.BY_OPTIMIZED, 0, 20000000000000, (err: BusinessError, res: Array<bundleState.BundleStateInfo>) => {
247  if (err) {
248    console.error('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback failed, because: ' + err.code);
249  } else {
250    console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback success.');
251    for (let i = 0; i < res.length; i++) {
252      console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback number : ' + (i + 1));
253      console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback result ' + JSON.stringify(res[i]));
254    }
255  }
256});
257```
258
259## bundleState.queryBundleStateInfoByInterval
260
261queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise&lt;Array&lt;BundleStateInfo&gt;&gt;
262
263通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,使用Promise形式返回。
264
265**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
266
267**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
268
269**系统API**:此接口为系统接口,三方应用不支持调用。
270
271**参数**:
272
273| 参数名        | 类型                            | 必填   | 说明    |
274| ---------- | ----------------------------- | ---- | ----- |
275| byInterval | [IntervalType](#intervaltype) | 是    | 查询类型。 |
276| begin      | number                        | 是    | 起始时间,单位毫秒。 |
277| end        | number                        | 是    | 结束时间,单位毫秒。 |
278
279**返回值**:
280
281| 类型                                       | 说明                                       |
282| ---------------------------------------- | ---------------------------------------- |
283| Promise&lt;Array&lt;[BundleStateInfo](#bundlestateinfo)&gt;&gt; | 指定的Promise回调方法。返回指定时间段间隔(天、周、月、年)查询应用使用时长统计信息。 |
284
285**示例**:
286
287```ts
288import { BusinessError } from '@ohos.base';
289
290bundleState.queryBundleStateInfoByInterval(bundleState.IntervalType.BY_OPTIMIZED, 0, 20000000000000).then((res: Array<bundleState.BundleStateInfo>) => {
291  console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise success.');
292  for (let i = 0; i < res.length; i++) {
293    console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise number : ' + (i + 1));
294    console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise result ' + JSON.stringify(res[i]));
295  }
296}).catch((err: BusinessError) => {
297  console.error('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise failed, because: ' + err.code);
298});
299```
300
301## bundleState.queryBundleActiveStates
302
303queryBundleActiveStates(begin: number, end: number, callback: AsyncCallback&lt;Array&lt;BundleActiveState&gt;&gt;): void
304
305通过指定起始和结束时间查询所有应用的事件集合,使用Callback形式返回。
306
307**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
308
309**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
310
311**系统API**:此接口为系统接口,三方应用不支持调用。
312
313**参数**:
314
315| 参数名      | 类型                                       | 必填   | 说明                                      |
316| -------- | ---------------------------------------- | ---- | --------------------------------------- |
317| begin    | number                                   | 是    | 起始时间,单位毫秒。                                   |
318| end      | number                                   | 是    | 结束时间,单位毫秒。                                   |
319| callback | AsyncCallback&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 是    | 指定的callback回调方法。返回指定起始和结束时间查询所有应用的事件集合。 |
320
321**示例**:
322
323```ts
324import { BusinessError } from '@ohos.base';
325
326bundleState.queryBundleActiveStates(0, 20000000000000, (err: BusinessError, res: Array<bundleState.BundleActiveState>) => {
327  if (err) {
328    console.error('BUNDLE_ACTIVE queryBundleActiveStates callback failed, because: ' + err.code);
329  } else {
330    console.log('BUNDLE_ACTIVE queryBundleActiveStates callback success.');
331    for (let i = 0; i < res.length; i++) {
332      console.log('BUNDLE_ACTIVE queryBundleActiveStates callback number : ' + (i + 1));
333      console.log('BUNDLE_ACTIVE queryBundleActiveStates callback result ' + JSON.stringify(res[i]));
334    }
335  }
336});
337```
338
339## bundleState.queryBundleActiveStates
340
341queryBundleActiveStates(begin: number, end: number): Promise&lt;Array&lt;BundleActiveState&gt;&gt;
342
343通过指定起始和结束时间查询所有应用的事件集合,使用Promise形式返回。
344
345**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
346
347**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
348
349**系统API**:此接口为系统接口,三方应用不支持调用。
350
351**参数**:
352
353| 参数名   | 类型     | 必填   | 说明    |
354| ----- | ------ | ---- | ----- |
355| begin | number | 是    | 起始时间,单位毫秒。 |
356| end   | number | 是    | 结束时间,单位毫秒。 |
357
358**返回值**:
359
360| 类型                                       | 说明                                     |
361| ---------------------------------------- | -------------------------------------- |
362| Promise&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 指定的Promise回调方法。返回指定起始和结束时间查询所有应用的事件集合。 |
363
364**示例**:
365
366```ts
367import { BusinessError } from '@ohos.base';
368
369bundleState.queryBundleActiveStates(0, 20000000000000).then((res: Array<bundleState.BundleActiveState>) => {
370  console.log('BUNDLE_ACTIVE queryBundleActiveStates promise success.');
371  for (let i = 0; i < res.length; i++) {
372    console.log('BUNDLE_ACTIVE queryBundleActiveStates promise number : ' + (i + 1));
373    console.log('BUNDLE_ACTIVE queryBundleActiveStates promise result ' + JSON.stringify(res[i]));
374  }
375}).catch((err: BusinessError) => {
376  console.error('BUNDLE_ACTIVE queryBundleActiveStates promise failed, because: ' + err.code);
377});
378```
379
380## bundleState.queryCurrentBundleActiveStates
381
382queryCurrentBundleActiveStates(begin: number, end: number, callback: AsyncCallback&lt;Array&lt;BundleActiveState&gt;&gt;): void
383
384通过指定起始和结束时间查询当前应用的事件集合,使用Callback形式返回。
385
386**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
387
388**参数**:
389
390| 参数名      | 类型                                       | 必填   | 说明                                      |
391| -------- | ---------------------------------------- | ---- | --------------------------------------- |
392| begin    | number                                   | 是    | 起始时间,单位毫秒。                                   |
393| end      | number                                   | 是    | 结束时间,单位毫秒。                                   |
394| callback | AsyncCallback&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 是    | 指定的callback回调方法。返回指定起始和结束时间查询当前应用的事件集合。 |
395
396**示例**:
397
398```ts
399import { BusinessError } from '@ohos.base';
400
401bundleState.queryCurrentBundleActiveStates(0, 20000000000000, (err: BusinessError, res: Array<bundleState.BundleActiveState>) => {
402  if (err) {
403    console.error('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback failed, because: ' + err.code);
404  } else {
405    console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback success.');
406    for (let i = 0; i < res.length; i++) {
407      console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback number : ' + (i + 1));
408      console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback result ' + JSON.stringify(res[i]));
409    }
410  }
411});
412```
413
414## bundleState.queryCurrentBundleActiveStates
415
416queryCurrentBundleActiveStates(begin: number, end: number): Promise&lt;Array&lt;BundleActiveState&gt;&gt;
417
418通过指定起始和结束时间查询当前应用的事件集合,使用Promise形式返回。
419
420**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
421
422**参数**:
423
424| 参数名   | 类型     | 必填   | 说明    |
425| ----- | ------ | ---- | ----- |
426| begin | number | 是    | 起始时间,单位毫秒。 |
427| end   | number | 是    | 结束时间,单位毫秒。 |
428
429**返回值**:
430
431| 类型                                       | 说明                                     |
432| ---------------------------------------- | -------------------------------------- |
433| Promise&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 指定的Promise回调方法。返回指定起始和结束时间查询当前应用的事件集合。 |
434
435**示例**:
436
437```ts
438import { BusinessError } from '@ohos.base';
439
440bundleState.queryCurrentBundleActiveStates(0, 20000000000000).then((res: Array<bundleState.BundleActiveState>) => {
441  console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise success.');
442  for (let i = 0; i < res.length; i++) {
443    console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise number : ' + (i + 1));
444    console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise result ' + JSON.stringify(res[i]));
445  }
446}).catch((err: BusinessError) => {
447  console.error('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise failed, because: ' + err.code);
448});
449```
450
451## BundleStateInfo
452
453提供应用使用时长的具体信息。
454
455### 属性
456
457**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App
458
459| 名称                      | 类型     | 必填   | 说明                                       |
460| ------------------------ | ------ | ---- | ---------------------------------------- |
461| bundleName               | string | 是    | 应用包名。                                    |
462| abilityPrevAccessTime    | number | 是    | 应用最后一次使用的时间。                             |
463| abilityInFgTotalTime     | number | 是    | 应用在前台使用的总时间。                             |
464| id                       | number | 否    | 用户id。|
465| abilityPrevSeenTime      | number | 否    | 应用最后一次在前台可见的时间。|
466| abilitySeenTotalTime     | number | 否    | 应用在前台可见的总时间。|
467| fgAbilityAccessTotalTime | number | 否    | 应用访问前台的总时间。|
468| fgAbilityPrevAccessTime  | number | 否    | 应用最后一次访问前台的时间。|
469| infosBeginTime           | number | 否    | BundleActiveInfo对象中第一条应用使用统计的记录时间。|
470| infosEndTime             | number | 否    | BundleActiveInfo对象中最后一条应用使用统计的记录时间。|
471
472### merge<sup>(deprecated)</sup>
473
474merge(toMerge: BundleStateInfo): void
475
476合并相同包名的应用使用信息。
477
478**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
479
480**参数**:
481
482| 参数名 | 类型 | 必填 | 说明 |
483| -------- | -------- | -------- | -------- |
484| toMerge | [BundleStateInfo](#bundlestateinfo) | 是 | 相同包名的应用使用统计信息。|
485
486## BundleActiveState
487
488提供应用事件的具体信息。
489
490提供应用使用时长的具体信息。
491
492**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App
493
494| 名称                   | 类型     | 必填   | 说明                                       |
495| --------------------- | ------ | ---- | ---------------------------------------- |
496| bundleName            | string | 是    | 应用包名。                                    |
497| stateType             | number | 是    | 应用事件类型。                                  |
498| stateOccurredTime     | number | 是    | 应用事件发生的时间戳。                              |
499| appUsagePriorityGroup | number | 否    | 应用程序的使用优先级组。|
500| indexOfLink           | string | 否    | 快捷方式id。|
501| nameOfClass           | string | 否    | 类名。|
502
503## BundleActiveInfoResponse
504
505提供应用使用时长的具体信息。
506
507**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
508
509| 参数名                            | 类型                                       | 必填   | 说明             |
510| ------------------------------ | ---------------------------------------- | ---- | -------------- |
511| [key: string]: BundleStateInfo | [key: string]: [BundleStateInfo](#bundlestateinfo) | 是    | 不同应用的使用时长统计信息。 |
512
513## IntervalType
514
515提供应用使用时长的查询类型。
516
517**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App
518
519| 名称           | 值  | 说明                                       |
520| ------------ | ---- | ---------------------------------------- |
521| BY_OPTIMIZED | 0    | 表示系统自行判断最合适的查询类型(天、周、月、年)去查询指定时间段间隔的应用使用时长信息。 |
522| BY_DAILY     | 1    | 表示系统按照天去查询指定时间段间隔的应用使用时长信息。              |
523| BY_WEEKLY    | 2    | 表示系统按照周去查询指定时间段间隔的应用使用时长信息。              |
524| BY_MONTHLY   | 3    | 表示系统按照月去查询指定时间段间隔的应用使用时长信息。              |
525| BY_ANNUALLY  | 4    | 表示系统按照年去查询指定时间段间隔的应用使用时长信息。              |