1# @ohos.privacyManager (隐私管理) 2 3本模块主要提供权限使用记录等隐私管理接口。 4 5> **说明:** 6> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 7> 本模块接口为系统接口。 8 9## 导入模块 10 11```js 12import privacyManager from '@ohos.privacyManager'; 13``` 14 15 16## privacyManager.addPermissionUsedRecord 17 18addPermissionUsedRecord(tokenID: number, permissionName: Permissions, successCount: number, failCount: number): Promise<void> 19 20受应用权限保护的应用在被其他服务、应用调用时,可以使用该接口增加一条权限使用记录。使用Promise异步回调。 21权限使用记录包括:调用方的应用身份标识、使用的应用权限名称,和其访问本应用成功、失败的次数。 22 23**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 24 25**系统能力:** SystemCapability.Security.AccessToken 26 27**参数:** 28 29| 参数名 | 类型 | 必填 | 说明 | 30| -------- | ------------------- | ---- | ------------------------------------------ | 31| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | 32| permissionName | Permissions | 是 | 应用权限名称。 | 33| successCount | number | 是 | 访问成功的次数。 | 34| failCount | number | 是 | 访问失败的次数。 | 35 36**返回值:** 37 38| 类型 | 说明 | 39| :------------ | :---------------------------------- | 40| Promise<void> | Promise对象。无返回结果的Promise对象。 | 41 42**错误码:** 43 44以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 45 46| 错误码ID | 错误信息 | 47| -------- | -------- | 48| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the count value is invalid. | 49| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 50| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 51| 12100007 | Service is abnormal. | 52| 12100008 | Out of memory. | 53 54**示例:** 55 56```js 57import privacyManager from '@ohos.privacyManager'; 58 59let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId 60try { 61 privacyManager.addPermissionUsedRecord(tokenID, "ohos.permission.PERMISSION_USED_STATS", 1, 0).then(() => { 62 console.log('addPermissionUsedRecord success'); 63 }).catch((err) => { 64 console.log(`addPermissionUsedRecord fail, err->${JSON.stringify(err)}`); 65 }); 66} catch(err) { 67 console.log(`catch err->${JSON.stringify(err)}`); 68} 69``` 70 71## privacyManager.addPermissionUsedRecord 72 73addPermissionUsedRecord(tokenID: number, permissionName: Permissions, successCount: number, failCount: number, callback: AsyncCallback<void>): void 74 75受应用权限保护的应用在被其他服务、应用调用时,可以使用该接口增加一条权限使用记录。使用callback异步回调。 76权限使用记录包括:调用方的应用身份标识、使用的应用权限名称,和其访问本应用成功、失败的次数。 77 78**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 79 80**系统能力:** SystemCapability.Security.AccessToken 81 82**参数:** 83 84| 参数名 | 类型 | 必填 | 说明 | 85| -------- | ------------------- | ---- | ------------------------------------------ | 86| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | 87| permissionName | Permissions | 是 | 应用权限名称。 | 88| successCount | number | 是 | 访问成功的次数。 | 89| failCount | number | 是 | 访问失败的次数。 | 90| callback | AsyncCallback<void> | 是 | 回调函数。当添加使用记录成功时,err为undefine;否则为错误对象。 | 91 92**错误码:** 93 94以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 95 96| 错误码ID | 错误信息 | 97| -------- | -------- | 98| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the count value is invalid. | 99| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 100| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 101| 12100007 | Service is abnormal. | 102| 12100008 | Out of memory. | 103 104**示例:** 105 106```js 107import privacyManager from '@ohos.privacyManager'; 108 109let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId 110try { 111 privacyManager.addPermissionUsedRecord(tokenID, "ohos.permission.PERMISSION_USED_STATS", 1, 0, (err, data) => { 112 if (err) { 113 console.log(`addPermissionUsedRecord fail, err->${JSON.stringify(err)}`); 114 } else { 115 console.log('addPermissionUsedRecord success'); 116 } 117 }); 118} catch(err) { 119 console.log(`catch err->${JSON.stringify(err)}`); 120} 121``` 122 123## privacyManager.getPermissionUsedRecord 124 125getPermissionUsedRecord(request: PermissionUsedRequest): Promise<PermissionUsedResponse> 126 127获取历史权限使用记录。使用Promise异步回调。 128 129**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 130 131**系统能力:** SystemCapability.Security.AccessToken 132 133**参数:** 134 135| 参数名 | 类型 | 必填 | 说明 | 136| -------- | ------------------- | ---- | ------------------------------------------ | 137| request | [PermissionUsedRequest](#permissionusedrequest) | 是 | 查询权限使用记录的请求。 | 138 139**返回值:** 140 141| 类型 | 说明 | 142| :------------ | :---------------------------------- | 143| Promise<[PermissionUsedResponse](#permissionusedresponse)> | Promise对象。返回查询的权限使用记录。| 144 145**错误码:** 146 147以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 148 149| 错误码ID | 错误信息 | 150| -------- | -------- | 151| 12100001 | The parameter is invalid. the value of flag in request is invalid. | 152| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 153| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 154| 12100007 | Service is abnormal. | 155| 12100008 | Out of memory. | 156 157**示例:** 158 159```js 160import privacyManager from '@ohos.privacyManager'; 161 162let request = { 163 "tokenId": 1, 164 "isRemote": false, 165 "deviceId": "device", 166 "bundleName": "bundle", 167 "permissionNames": [], 168 "beginTime": 0, 169 "endTime": 1, 170 "flag":privacyManager.PermissionUsageFlag.FLAG_PERMISSION_USAGE_DETAIL, 171}; 172try { 173 privacyManager.getPermissionUsedRecord(request).then((data) => { 174 console.log(`getPermissionUsedRecord success, data->${JSON.stringify(data)}`); 175 }).catch((err) => { 176 console.log(`getPermissionUsedRecord fail, err->${JSON.stringify(err)}`); 177 }); 178} catch(err) { 179 console.log(`catch err->${JSON.stringify(err)}`); 180} 181``` 182 183## privacyManager.getPermissionUsedRecord 184 185getPermissionUsedRecord(request: PermissionUsedRequest, callback: AsyncCallback<PermissionUsedResponse>): void 186 187获取历史权限使用记录。使用callback异步回调。 188 189**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 190 191**系统能力:** SystemCapability.Security.AccessToken 192 193**参数:** 194 195| 参数名 | 类型 | 必填 | 说明 | 196| -------- | ------------------- | ---- | ------------------------------------------ | 197| request | [PermissionUsedRequest](#permissionusedrequest) | 是 | 查询权限使用记录的请求。 | 198| callback | AsyncCallback<[PermissionUsedResponse](#permissionusedresponse)> | 是 | 回调函数。当查询记录成功时,err为undefine,data为查询到的权限使用记录;否则为错误对象。 | 199 200**错误码:** 201 202以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 203 204| 错误码ID | 错误信息 | 205| -------- | -------- | 206| 12100001 | The parameter is invalid. the value of flag in request is invalid. | 207| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 208| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 209| 12100007 | Service is abnormal. | 210| 12100008 | Out of memory. | 211 212**示例:** 213 214```js 215import privacyManager from '@ohos.privacyManager'; 216 217let request = { 218 "tokenId": 1, 219 "isRemote": false, 220 "deviceId": "device", 221 "bundleName": "bundle", 222 "permissionNames": [], 223 "beginTime": 0, 224 "endTime": 1, 225 "flag":privacyManager.PermissionUsageFlag.FLAG_PERMISSION_USAGE_DETAIL, 226}; 227try { 228 privacyManager.getPermissionUsedRecord(request, (err, data) => { 229 if (err) { 230 console.log(`getPermissionUsedRecord fail, err->${JSON.stringify(err)}`); 231 } else { 232 console.log(`getPermissionUsedRecord success, data->${JSON.stringify(data)}`); 233 } 234 }); 235} catch(err) { 236 console.log(`catch err->${JSON.stringify(err)}`); 237} 238``` 239 240## privacyManager.startUsingPermission 241 242startUsingPermission(tokenID: number, permissionName: Permissions): Promise<void> 243 244应用开始使用某项权限,可监听应用在前后台使用权限,并将使用权限的记录落盘,由系统服务调用。使用Promise异步回调。 245 246**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 247 248**系统能力:** SystemCapability.Security.AccessToken 249 250**参数:** 251 252| 参数名 | 类型 | 必填 | 说明 | 253| -------------- | ------ | ---- | ------------------------------------ | 254| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | 255| permissionName | Permissions | 是 | 需要使用的权限名。 | 256 257**返回值:** 258 259| 类型 | 说明 | 260| ------------- | --------------------------------------- | 261| Promise<void> | Promise对象。无返回结果的Promise对象。| 262 263**错误码:** 264 265以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 266 267| 错误码ID | 错误信息 | 268| -------- | -------- | 269| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the count value is invalid. | 270| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 271| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 272| 12100004 | The interface is called repeatedly with the same input. It means the application specified by the tokenID has been using the specified permission. | 273| 12100007 | Service is abnormal. | 274| 12100008 | Out of memory. | 275 276**示例:** 277 278```js 279import privacyManager from '@ohos.privacyManager'; 280 281let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId 282try { 283 privacyManager.startUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS").then(() => { 284 console.log('startUsingPermission success'); 285 }).catch((err) => { 286 console.log(`startUsingPermission fail, err->${JSON.stringify(err)}`); 287 }); 288} catch(err) { 289 console.log(`catch err->${JSON.stringify(err)}`); 290} 291``` 292 293## privacyManager.startUsingPermission 294 295startUsingPermission(tokenID: number, permissionName: Permissions, callback: AsyncCallback<void>): void 296 297应用开始使用某项权限,可监听应用在前后台使用权限,并将使用权限的记录落盘,由系统服务调用。使用callback异步回调。 298 299**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 300 301**系统能力:** SystemCapability.Security.AccessToken 302 303**参数:** 304 305| 参数名 | 类型 | 必填 | 说明 | 306| -------------- | --------------------- | ---- | ------------------------------------ | 307| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | 308| permissionName | Permissions | 是 | 需要使用的权限名。 | 309| callback | AsyncCallback<void> | 是 | 回调函数。当开始使用权限成功时,err为undefine;否则为错误对象。 | 310 311**错误码:** 312 313以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 314 315| 错误码ID | 错误信息 | 316| -------- | -------- | 317| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. | 318| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 319| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 320| 12100004 | The interface is called repeatedly with the same input. It means the application specified by the tokenID has been using the specified permission. | 321| 12100007 | Service is abnormal. | 322| 12100008 | Out of memory. | 323 324**示例:** 325 326```js 327import privacyManager from '@ohos.privacyManager'; 328 329let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId 330try { 331 privacyManager.startUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS", (err, data) => { 332 if (err) { 333 console.log(`startUsingPermission fail, err->${JSON.stringify(err)}`); 334 } else { 335 console.log('startUsingPermission success'); 336 } 337 }); 338} catch(err) { 339 console.log(`catch err->${JSON.stringify(err)}`); 340} 341``` 342 343## privacyManager.stopUsingPermission 344 345stopUsingPermission(tokenID: number, permissionName: Permissions): Promise<void> 346 347应用停止使用某项权限,与Start对应,由系统服务调用。使用Promise异步回调。 348 349**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 350 351**系统能力:** SystemCapability.Security.AccessToken 352 353**参数:** 354 355| 参数名 | 类型 | 必填 | 说明 | 356| -------------- | ------ | ---- | ------------------------------------ | 357| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | 358| permissionName | Permissions | 是 | 需要使用的权限名。 | 359 360**返回值:** 361 362| 类型 | 说明 | 363| ------------- | --------------------------------------- | 364| Promise<void> | Promise对象。无返回结果的Promise对象。| 365 366**错误码:** 367 368以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 369 370| 错误码ID | 错误信息 | 371| -------- | -------- | 372| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. | 373| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 374| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 375| 12100004 | The interface is not used with | 376| 12100007 | Service is abnormal. | 377| 12100008 | Out of memory. | 378 379**示例:** 380 381```js 382import privacyManager from '@ohos.privacyManager'; 383 384let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId 385try { 386 privacyManager.stopUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS").then(() => { 387 console.log('stopUsingPermission success'); 388 }).catch((err) => { 389 console.log(`stopUsingPermission fail, err->${JSON.stringify(err)}`); 390 }); 391} catch(err) { 392 console.log(`catch err->${JSON.stringify(err)}`); 393} 394``` 395 396## privacyManager.stopUsingPermission 397 398stopUsingPermission(tokenID: number, permissionName: Permissions, callback: AsyncCallback<void>): void 399 400应用停止使用某项权限,与Start对应,由系统服务调用。使用callback异步回调。 401 402**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 403 404**系统能力:** SystemCapability.Security.AccessToken 405 406**参数:** 407 408| 参数名 | 类型 | 必填 | 说明 | 409| -------------- | --------------------- | ---- | ------------------------------------ | 410| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | 411| permissionName | Permissions | 是 | 需要使用的权限名。 | 412| callback | AsyncCallback<void> | 是 | 回调函数。当停止使用权限成功时,err为undefine;否则为错误对象。 | 413 414**错误码:** 415 416以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 417 418| 错误码ID | 错误信息 | 419| -------- | -------- | 420| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. | 421| 12100002 | The specified tokenID does not exist or it does not refer to an application process. | 422| 12100003 | The specified permission does not exist or it is not an user_grant permission. | 423| 12100004 | The interface is not used with | 424| 12100007 | Service is abnormal. | 425| 12100008 | Out of memory. | 426 427**示例:** 428 429```js 430import privacyManager from '@ohos.privacyManager'; 431 432let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId 433try { 434 privacyManager.stopUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS", (err, data) => { 435 if (err) { 436 console.log(`stopUsingPermission fail, err->${JSON.stringify(err)}`); 437 } else { 438 console.log('stopUsingPermission success'); 439 } 440 }); 441} catch(err) { 442 console.log(`catch err->${JSON.stringify(err)}`); 443} 444``` 445 446## privacyManager.on 447 448on(type: 'activeStateChange', permissionList: Array<Permissions>, callback: Callback<ActiveChangeResponse>): void 449 450订阅指定权限列表的权限使用状态变更事件。 451 452**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 453 454**系统能力:** SystemCapability.Security.AccessToken 455 456**参数:** 457 458| 参数名 | 类型 | 必填 | 说明 | 459| ------------------ | --------------------- | ---- | ------------------------------------------------------------ | 460| type | string | 是 | 订阅事件类型,固定为'activeStateChange',权限使用状态变更事件。 | 461| permissionList | Array<Permissions> | 是 | 订阅的权限名列表,为空时表示订阅所有的权限使用状态变化。 | 462| callback | Callback<[ActiveChangeResponse](#activechangeresponse)> | 是 | 订阅指定权限使用状态变更事件的回调。 | 463 464**错误码:** 465 466以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 467 468| 错误码ID | 错误信息 | 469| -------- | -------- | 470| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. | 471| 12100004 | The interface is called repeatedly with the same input. | 472| 12100005 | The registration time has exceeded the limitation. | 473| 12100007 | Service is abnormal. | 474| 12100008 | Out of memory. | 475 476**示例:** 477 478```js 479import privacyManager from '@ohos.privacyManager'; 480 481let permissionList = []; 482try { 483 privacyManager.on('activeStateChange', permissionList, (data) => { 484 console.debug("receive permission state change, data:" + JSON.stringify(data)); 485 }); 486} catch(err) { 487 console.log(`catch err->${JSON.stringify(err)}`); 488} 489``` 490 491## privacyManager.off 492 493off(type: 'activeStateChange', permissionList: Array<Permissions>, callback?: Callback<ActiveChangeResponse>): void; 494 495取消订阅指定权限列表的权限使用状态变更事件。 496 497**需要权限:** ohos.permission.PERMISSION_USED_STATS,仅系统应用可用。 498 499**系统能力:** SystemCapability.Security.AccessToken 500 501**参数:** 502 503| 参数名 | 类型 | 必填 | 说明 | 504| ------------------ | --------------------- | ---- | ------------------------------------------------------------ | 505| type | string | 是 | 订阅事件类型,固定为'activeStateChange',权限使用状态变更事件。 | 506| permissionList | Array<Permissions> | 是 | 订阅的权限名列表,为空时表示订阅所有的权限状态变化,必须与on的输入一致。 | 507| callback | Callback<[ActiveChangeResponse](#activechangeresponse)> | 否 | 取消订阅指定tokenId与指定权限名状态变更事件的回调。| 508 509**错误码:** 510 511以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 512 513| 错误码ID | 错误信息 | 514| -------- | -------- | 515| 12100001 | The parameter is invalid. The permissionName in list is all invalid or the list size is larger than 1024. | 516| 12100004 | The interface is not used together with "on"| 517| 12100007 | Service is abnormal. | 518| 12100008 | Out of memory. | 519 520**示例:** 521 522```js 523import privacyManager from '@ohos.privacyManager'; 524 525let permissionList = []; 526try { 527 privacyManager.off('activeStateChange', permissionList); 528}catch(err) { 529 console.log(`catch err->${JSON.stringify(err)}`); 530} 531``` 532 533## PermissionUsageFlag 534 535使用记录的查询方式的枚举。 536 537**系统能力:** SystemCapability.Security.AccessToken 538 539| 名称 | 值 | 说明 | 540| ----------------------- | ------ | ---------------------- | 541| FLAG_PERMISSION_USAGE_SUMMARY | 0 | 表示查询总览数据。 | 542| FLAG_PERMISSION_USAGE_DETAIL | 1 | 表示查询详细数据。 | 543 544## PermissionUsedRequest 545 546表示使用记录的查询请求。 547 548**系统能力:** SystemCapability.Security.AccessToken 549 550| 名称 | 类型 | 必填 | 说明 | 551| -------- | -------------- | ---- | ---------------------------------------- | 552| tokenId | number | 否 | 目标应用的身份标识。 | 553| isRemote | boolean | 否 | 默认值false。 | 554| deviceId | string | 否 | 目标应用所在设备的ID。 | 555| bundleName | string | 否 | 目标应用的包名。 | 556| permissionNames | Array<Permissions> | 否 | 需要查询的权限集合。 | 557| beginTime | number | 否 | 查询的起始时间,单位:ms,默认值0,不设定起始时间。 | 558| endTime | number | 否 | 查询的终止时间,单位:ms,默认值0,不设定终止时间。 | 559| flag | [PermissionUsageFlag](#permissionusageflag) | 是 | 查询方式,默认值FLAG_PERMISSION_USAGE_SUMMARY。 | 560 561## PermissionUsedResponse 562 563表示所有应用的访问记录。 564 565**系统能力:** SystemCapability.Security.AccessToken 566 567| 名称 | 类型 | 必填 | 说明 | 568| -------- | -------------- | ---- | ---------------------------------------- | 569| beginTime | number | 否 | 查询记录的起始时间,单位:ms。 | 570| endTime | number | 否 | 查询记录的终止时间,单位:ms。 | 571| bundleRecords | Array<[BundleUsedRecord](#bundleusedrecord)> | 否 | 应用的权限使用记录集合。 | 572 573## BundleUsedRecord 574 575某个应用的访问记录。 576 577**系统能力:** SystemCapability.Security.AccessToken 578 579| 名称 | 类型 | 必填 | 说明 | 580| -------- | -------------- | ---- | ---------------------------------------- | 581| tokenId | number | 否 | 目标应用的身份标识。 | 582| isRemote | boolean | 否 | 默认值false。 | 583| deviceId | string | 否 | 目标应用所在设备的ID。 | 584| bundleName | string | 否 | 目标应用的包名。 | 585| permissionRecords | Array<[PermissionUsedRecord](#permissionusedrecord)> | 否 | 每个应用的权限使用记录集合。 | 586 587## PermissionUsedRecord 588 589某个权限的访问记录。 590 591**系统能力:** SystemCapability.Security.AccessToken 592 593| 名称 | 类型 | 必填 | 说明 | 594| -------- | -------------- | ---- | ---------------------------------------- | 595| permissionName | Permissions | 否 | 权限名。 | 596| accessCount | number | 否 | 该权限访问总次数。 | 597| rejectCount | number | 否 | 该权限拒绝总次数。 | 598| lastAccessTime | number | 否 | 最后一次访问时间,单位:ms。 | 599| lastRejectTime | number | 否 | 最后一次拒绝时间,单位:ms。 | 600| lastAccessDuration | number | 否 | 最后一次访问时长,单位:ms。 | 601| accessRecords | Array<[UsedRecordDetail](#usedrecorddetail)> | 否 | 访问记录集合,当flag为FLAG_PERMISSION_USAGE_SUMMARY时生效,默认查询10条。 | 602| rejectRecords | Array<[UsedRecordDetail](#usedrecorddetail)> | 否 | 拒绝记录集合,当flag为FLAG_PERMISSION_USAGE_SUMMARY时生效,默认查询10条。 | 603 604## UsedRecordDetail 605 606单次访问记录详情。 607 608**系统能力:** SystemCapability.Security.AccessToken 609 610| 名称 | 类型 | 必填 | 说明 | 611| -------- | -------------- | ---- | ---------------------------------------- | 612| status | number | 否 | 访问状态。 | 613| timestamp | number | 否 | 访问时的时间戳,单位:ms。 | 614| accessDuration | number | 否 | 访问时长,单位:ms。 | 615 616## PermissionActiveStatus 617 618表示权限使用状态变化类型的枚举。 619 620**系统能力:** SystemCapability.Security.AccessToken 621 622| 名称 | 值 | 说明 | 623| ------------------------- | ------ | ---------------- | 624| PERM_INACTIVE | 0 | 表示未使用权限。 | 625| PERM_ACTIVE_IN_FOREGROUND | 1 | 表示前台使用权限。 | 626| PERM_ACTIVE_IN_BACKGROUND | 2 | 表示后台使用权限。 | 627 628## ActiveChangeResponse 629 630表示某次权限使用状态变化的详情。 631 632 **系统能力:** SystemCapability.Security.AccessToken 633 634| 名称 | 类型 | 可读 | 可写 | 说明 | 635| -------------- | ---------------------- | ---- | ---- | --------------------- | 636| tokenId | number | 是 | 否 | 被订阅的应用身份标识 | 637| permissionName | Permissions | 是 | 否 | 权限使用状态发生变化的权限名 | 638| deviceId | string | 是 | 否 | 设备号 | 639| activeStatus | [PermissionActiveStatus](#permissionactivestatus) | 是 | 否 | 权限使用状态变化类型 | 640