diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/components/dialog.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/components/dialog.ets index b5d27831965882f840958829b6840cb26a17d142..123b098dcfd3a9e9e7f4bd3624d74faadd644637 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/components/dialog.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/components/dialog.ets @@ -31,12 +31,14 @@ export struct privacyDialog { @Link count: number @Link result: Array controller: CustomDialogController - cancel: (group, accessTokenId, permissionList, userFixedFlag) => void - confirm: (group, accessTokenId, permissionList, userFixedFlag) => void + cancel: (groups, index, accessTokenId, permissionList, userFixedFlag) => void + confirm: (groups, index, accessTokenId, permissionList, userFixedFlag) => void @State accessTokenId: number = 0 @State initStatus: number = Constants.INIT_NEED_TO_WAIT @State reqPerms: Array = [] @State grantGroups: Array = [] + @State groupsNumber: number = 0 + @State requestIndex: number = 1 @State userFixedFlag: number = 2 // means user fixed @State appName: string = "" @@ -49,7 +51,7 @@ export struct privacyDialog { .margin({ top: Constants.DIALOG_ICON_MARGIN_TOP }) - Text(`${this.count + 1} / ${this.reqPerms.length}`) + Text(`${this.requestIndex} / ${this.groupsNumber}`) .fontSize(Constants.DIALOG_LABEL_FONT_SIZE) .fontColor($r('app.color.secondary_font_color')) .margin({ @@ -84,19 +86,21 @@ export struct privacyDialog { Button('禁止') .fontSize(Constants.BUTTON_FONT_SIZE) .onClick(() => { - this.cancel(this.grantGroups[this.count], this.accessTokenId, this.reqPerms, this.userFixedFlag) + this.cancel(this.grantGroups, this.count, this.accessTokenId, this.reqPerms, this.userFixedFlag) if (this.count === this.reqPerms.length) { this.controller.close() } + this.requestIndex ++ }).customizeButton() Text('|').fontSize(Constants.BUTTON_DIVIDER_FONT_SIZE).fontColor($r('app.color.divider_color')) Button('允许') .fontSize(Constants.BUTTON_FONT_SIZE) .onClick(() => { - this.confirm(this.grantGroups[this.count], this.accessTokenId, this.reqPerms, this.userFixedFlag) + this.confirm(this.grantGroups, this.count, this.accessTokenId, this.reqPerms, this.userFixedFlag) if (this.count === this.reqPerms.length) { this.controller.close() } + this.requestIndex ++ }).customizeButton() }.margin({ top: Constants.BUTTON_MARGIN_TOP @@ -124,16 +128,11 @@ export struct privacyDialog { console.log("GrantAbility permission: " + permission + " flag : " + flag) if(flag == this.userFixedFlag) { console.log("GrantAbility permission has been fixed:" + permission) - var ret = await acManager.verifyAccessToken(this.accessTokenId, permission) - if (ret == 0) { - this.result[this.count] = 0 - } else { - this.result[this.count] = -1 - } + this.result[this.count] = await acManager.verifyAccessToken(this.accessTokenId, permission) this.count ++ return false } - this.result[this.count] = -1 + this.result[this.count] = abilityAccessCtrl.GrantStatus.PERMISSION_DENIED return true } @@ -164,8 +163,10 @@ export struct privacyDialog { aboutToAppear() { this.count = 0; - this.initStatus = Constants.INIT_NEED_TO_WAIT - this.result = [] + this.initStatus = Constants.INIT_NEED_TO_WAIT; + this.result = []; + this.groupsNumber = 0; + this.requestIndex = 1; featureAbility.getWant((err, want) => { if (err.code != 0) { console.log("GrantAbility featureAbility.getWant err:" + err) @@ -186,6 +187,9 @@ export struct privacyDialog { this.grantGroups.push(0) console.log("GrantAbility permission not find:" + item) }else { + if (this.grantGroups.find(group) == undefined) { + this.groupsNumber ++ + } this.grantGroups.push(group) } }) diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/utils/constant.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/utils/constant.ets index ca34800213fe85316aef1951c67d11ab913523cf..94c8658c44d96870331e8442f3a5cd8d24256bcc 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/utils/constant.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/common/utils/constant.ets @@ -42,10 +42,12 @@ export default class Constants { static DIALOG_WIDTH = "100%"; // initial check status - static INIT_NEED_TO_WAIT = 0 - static INIT_NEED_TO_VERIFY = 1 - static INIT_NEED_TO_TERMINATED = 2 + static INIT_NEED_TO_WAIT = 0; + static INIT_NEED_TO_VERIFY = 1; + static INIT_NEED_TO_TERMINATED = 2; - static RESULT_SUCCESS = 1 - static RESULT_FAILURE = 0 + static RESULT_SUCCESS = 1; + static RESULT_FAILURE = 0; + + static PERMISSION_UNREQUEST = -100; } \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/pages/dialogPlus.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/pages/dialogPlus.ets index bb999651940bc9410fecd81d3ad8e879ed5d2053..2a67853e661ae3766ab089738417fd195d958d00 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/pages/dialogPlus.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/dynamic/pages/dialogPlus.ets @@ -27,44 +27,26 @@ struct dialogPlusPage { autoCancel: true, alignment: DialogAlignment.Center }) - async privacyAccept(group, accessTokenId, permissionList, userFixedFlag) { - try { - var acManager = abilityAccessCtrl.createAtManager() - var num = 0 - group.permissions.forEach(async permission => { - console.log("GrantAbility grant permission:" + permission) - const result = await acManager.grantUserGrantedPermission(accessTokenId, permission, userFixedFlag) - num ++ - console.log("GrantAbility grant permission result:" + result) - var index = permissionList.indexOf(permission) - if (index == -1) { - console.log("GrantAbility grant permission index err:" + permission) - }else { - if (result == 0) { - this.result[index] = 0 - console.log("GrantAbility grant permission success:" + permission) - } else { - console.log("GrantAbility failed to grant permission:" + permission + " ret:" + result) - } - } - if(num == group.permissions.length) { - this.count ++ - } - }) - }catch { - this.count ++ - } + async privacyAccept(groups, index, accessTokenId, permissionList, userFixedFlag) { + var group = groups[index] + var acManager = abilityAccessCtrl.createAtManager() + group.permissions.forEach(async permission => { + const result = await acManager.grantUserGrantedPermission(accessTokenId, permission, userFixedFlag) + console.log("GrantAbility grant permission:" + permission + " result:" + result) + if ((permission == permissionList[index]) && (result == 0)) { + this.result[index] = 0 + } + }) + this.count ++ } - async privacyCancel(group, accessTokenId, permissionList, userFixedFlag) { + async privacyCancel(groups, index, accessTokenId, permissionList, userFixedFlag) { + var group = groups[index] var acManager = abilityAccessCtrl.createAtManager() group.permissions.forEach(async permission => { - console.log("GrantAbility revoke permission:" + permission) const result = await acManager.revokeUserGrantedPermission(accessTokenId, permission, userFixedFlag) - console.log("GrantAbility revoke permission result:" + result) - var index = permissionList.indexOf(permission) - if (index != -1 && result == 0) { + console.log("GrantAbility revoke permission:" + permission + " result:" + result) + if ((permission == permissionList[index]) && (result == 0)) { this.result[index] = -1 - console.log("GrantAbility revoke permission:" + permission) } }) this.count ++