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