From a75c53805c361f72e1f2928b12f3abaa6235e7cf Mon Sep 17 00:00:00 2001 From: fanchenxuan Date: Wed, 22 Jun 2022 17:00:33 +0800 Subject: [PATCH] record Signed-off-by: fanchenxuan --- .../com.ohos.permissionmanager/.gitignore | 6 + .../permissionmanager/src/main/config.json | 3 +- .../common/model/permissionGroup.ets | 4 +- .../MainAbility/common/components/backBar.ets | 26 + .../MainAbility/common/components/search.ets | 12 +- .../common/model/permissionGroup.ets | 7 +- .../ets/MainAbility/common/utils/constant.ets | 21 +- .../ets/MainAbility/common/utils/utils.ets | 15 +- .../pages/application-secondary.ets | 4 +- .../pages/application-tertiary.ets | 2 +- .../pages/authority-management.ets | 77 +-- .../MainAbility/pages/authority-secondary.ets | 2 +- .../pages/authority-tertiary-groups.ets | 2 +- .../MainAbility/pages/authority-tertiary.ets | 2 +- .../MainAbility/pages/other-permissions.ets | 2 +- .../pages/permission-access-record.ets | 490 ++++++++++++++++++ .../main/resources/base/element/color.json | 4 + .../main/resources/base/element/string.json | 76 ++- .../resources/base/media/gongneng_dian.svg | 1 + .../base/media/ic_multi_device_vector.svg | 2 +- .../base/media/xiangshangjiantou.svg | 1 + .../resources/base/media/xiangxiajiantou.svg | 1 + .../main/resources/zh_CN/element/string.json | 88 ++++ 23 files changed, 741 insertions(+), 107 deletions(-) create mode 100644 frameworks/com.ohos.permissionmanager/.gitignore create mode 100644 frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/permission-access-record.ets create mode 100644 frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/gongneng_dian.svg create mode 100644 frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangshangjiantou.svg create mode 100644 frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangxiajiantou.svg create mode 100644 frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/zh_CN/element/string.json diff --git a/frameworks/com.ohos.permissionmanager/.gitignore b/frameworks/com.ohos.permissionmanager/.gitignore new file mode 100644 index 000000000..ec5fe0172 --- /dev/null +++ b/frameworks/com.ohos.permissionmanager/.gitignore @@ -0,0 +1,6 @@ +/build +/node_modules +/.gradle +/.idea +local.properties +package-lock.json diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/config.json b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/config.json index 6855edecc..b0e05013b 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/config.json +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/config.json @@ -56,7 +56,8 @@ "pages/authority-secondary", "pages/authority-tertiary", "pages/authority-tertiary-groups", - "pages/other-permissions" + "pages/other-permissions", + "pages/permission-access-record" ], "name": ".MainAbility", "window": { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/GrantAbility/common/model/permissionGroup.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/GrantAbility/common/model/permissionGroup.ets index 0f0b2d5e5..54699affc 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/GrantAbility/common/model/permissionGroup.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/GrantAbility/common/model/permissionGroup.ets @@ -157,8 +157,8 @@ export const permissionGroups: any[] = [ { "permissionName": "ohos.permission.WRITE_CALENDAR", "groupName": "CALENDAR", - "label": "修建/修改/删除日历", - "description": "允许应用修建/修改/删除日历。", + "label": "新建/修改/删除日历", + "description": "允许应用新建/修改/删除日历。", "groupId": 8 }, { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/backBar.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/backBar.ets index db9331306..4e1f3f416 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/backBar.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/backBar.ets @@ -14,11 +14,14 @@ */ import router from '@system.router'; +import Resmgr from '@ohos.resourceManager' import Constants from '../utils/constant.ets'; @Component export struct backBar { @Prop title: string; // return title name + @Prop recordable: boolean + @State record: string = '' build() { Column() { @@ -41,6 +44,21 @@ export struct backBar { .flexGrow(Constants.BACKBAR_TEXT_FLEX_GROW) .fontWeight(FontWeight.Bold) .margin({ top: Constants.BACKBAR_TEXT_MARGIN_TOP }) + if(this.recordable) { + Image($r("app.media.gongneng_dian")) + .objectFit(ImageFit.Contain) + .height(Constants.BACKBAR_IMAGE_HEIGHT) + .width(Constants.BACKBAR_IMAGE_WIDTH) + .margin({ top: Constants.BACKBAR_TEXT_MARGIN_TOP, right: Constants.BACKBAR_IMAGE_MARGIN_RIGHT }) + .bindMenu([ + { + value: this.record, + action: () => { + router.push({ uri: 'pages/permission-access-record' }) + } + } + ]) + } } } .height(Constants.BACKBAR_HEIGHT) @@ -48,4 +66,12 @@ export struct backBar { .alignItems(HorizontalAlign.Start) .backgroundColor($r('app.color.background_color')) } + + aboutToAppear() { + Resmgr.getResourceManager(Constants.BUNDLE_NAME).then(item => { + item.getString($r("app.string.permission_access_record").id, (err, val) => { + this.record = val + }) + }) + } } \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/search.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/search.ets index d0de61911..78cbabfed 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/search.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/components/search.ets @@ -51,13 +51,11 @@ export struct textInput { }) .onEditChanged((isEditing) => { }) - Column() { - Image($r('app.media.search')) - .objectFit(ImageFit.Contain) - .width(Constants.TEXTINPUT_IMAGE_WIDTH) - .height(Constants.TEXTINPUT_IMAGE_HEIGHT) - .margin({ left: Constants.TEXTINPUT_IMAGE_MARGIN_LEFT, top: Constants.TEXTINPUT_IMAGE_MARGIN_TOP }) - } + Image($r('app.media.search')) + .objectFit(ImageFit.Contain) + .width(Constants.TEXTINPUT_IMAGE_WIDTH) + .height(Constants.TEXTINPUT_IMAGE_HEIGHT) + .position({ x: Constants.TEXTINPUT_IMAGE_MARGIN_LEFT, y: Constants.TEXTINPUT_IMAGE_MARGIN_TOP }) } } } diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/model/permissionGroup.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/model/permissionGroup.ets index 6b0450a78..027377d25 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/model/permissionGroup.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/model/permissionGroup.ets @@ -157,8 +157,8 @@ export const permissionGroups: any[] = [ { "permissionName": "ohos.permission.WRITE_CALENDAR", "groupName": "CALENDAR", - "label": "修建/修改/删除日历", - "description": "允许应用修建/修改/删除日历。", + "label": "新建/修改/删除日历", + "description": "允许应用新建/修改/删除日历。", "groupId": 8 }, { @@ -178,6 +178,7 @@ export const permissionGroups: any[] = [ { "permissionName": "ohos.permission.DISTRIBUTED_DATASYNC", "groupName": "OTHER", + "icon": $r("app.media.ic_multi_device_vector"), "label": "多设备协同", "description": "发现并访问其他设备。", "groupId": 11 @@ -371,7 +372,7 @@ export const permissionDescriptions: object = { "通讯录": "允许应用新建/修改/删除设备上存储的联系人信息。" , "通话记录": "允许新建/修改/删除设备上的通话记录信息。" , "媒体和文件": "允许应用访问户媒体文件,如视频、音频、图片等。" , - "日历": "允许应用修建/修改/删除日历。" , + "日历": "允许应用新建/修改/删除日历。" , "健身运动": "允许应用程序读取用户的运动状态。" , "身体传感器": "允许应用程序读取用户的健康数据。" , "其他权限": "允许应用与远程设备交换用户数据(如图片、音乐、视频、及应用数据等)。" diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/constant.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/constant.ets index 5682ea437..04c4c34b6 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/constant.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/constant.ets @@ -53,7 +53,7 @@ export default class Constants { static TEXTINPUT_HEIGHT = 40; static TEXTINPUT_IMAGE_WIDTH = 16; static TEXTINPUT_IMAGE_HEIGHT = 16; - static TEXTINPUT_IMAGE_MARGIN_LEFT = -300; + static TEXTINPUT_IMAGE_MARGIN_LEFT = 12; static TEXTINPUT_IMAGE_MARGIN_TOP = 12; // grid useSizeType @@ -89,19 +89,33 @@ export default class Constants { static FULL_HEIGHT = '100%'; // public property style + static PERMISSION = 1; + static APPLICATION = 0; static LAYOUT_WEIGHT = 1; static FLEX_GROW = 1; static TEXT_DECORATION_HEIGHT = 1; static TEXT_MIDDLE_FONT_SIZE = 16; static TEXT_SMAL_FONT_SIZE = 14; static TEXT_SMALLER_FONT_SIZE = 12; + static TEXT_LINE_HEIGHT = 22; + static TEXT_SMALL_LINE_HEIGHT = 19; static CONSTRAINTSIZE_MINHEIGHT = 48; static LISTITEM_ROW_HEIGHT = 48; static LISTITEM_PADDING_LEFT = 24; + static LISTITEM_PADDING_LEFT_RECORD = 32; + static LISTITEM_MARGIN_BOTTOM = 12; + static LISTITEM_MARGIN_BOTTOM_PERMISSION = 14; + static LISTITEM_MARGIN_BOTTOM_APPLICATION = 18; + static LISTITEM_HEIGHT_PERMISSION = 72; + static LISTITEM_HEIGHT_APPLICATION = 80; static LIST_PADDING_LEFT = 12 static LISTITEM_PADDING_RIGHT = 24; static IMAGE_HEIGHT = 24; static IMAGE_WIDTH = 12; + static IMAGE_HEIGHT_RECORD = 12; + static IMAGE_WIDTH_RECORD = 24; + static IMAGE_HEIGHT_RECORD_APPLICATION = 16; + static IMAGE_WIDTH_RECORD_APPLICATION = 16; static BORDER_RADIUS = 24; static TITLE_MARGIN_BOTTOM = 16; @@ -165,6 +179,8 @@ export default class Constants { static MANAGEMENT_IMAGE_WIDTH = 24; static MANAGEMENT_IMAGE_HEIGHT = 24; static MANAGEMENT_IMAGE_MARGIN_RIGHT = 16; + static MANAGEMENT_IMAGE_MARGIN_RIGHT_RECORD = 24; + static MANAGEMENT_IMAGE_MARGIN_LEFT = 8; static MANAGEMENT_ROW_HEIGHT = 56; static MANAGEMENT_TEXT_DECORATION_WIDTH = '95%'; static MANAGEMENT_TEXT_DECORATION_MARGIN_LEFT = 40; @@ -182,6 +198,7 @@ export default class Constants { static APPLICATION_TEXT_MARGIN_RIGHT = 4; static APPLICATION_LIST_PADDING_LEFT = 12; static APPLICATION_LIST_PADDING_RIGHT = 12; + static APPLICATION_LIST_MARGIN_BOTTOM = 50; static APPLICATION_LISTITEM_PADDING_LEFT = 12; static APPLICATION_LISTITEM_PADDING_RIGHT = 12; static APPLICATION_TEXTINPUT_PADDING_LEFT = 12; @@ -191,7 +208,7 @@ export default class Constants { static APPLICATION_ALPHABETINDEX_MARGIN_TOP = 12; static APPLICATION_ALPHABETINDEX_WIDTH = 24; static APPLICATION_TEXT_DECORATION_WIDTH = '90%'; - static APPLICATION_TEXT_DECORATION_MARGIN_LEFT = 60; + static APPLICATION_TEXT_DECORATION_MARGIN_LEFT = 68; // slice static SLICE_START = 0; diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/utils.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/utils.ets index 08b2a34be..94f38ef4f 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/utils.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/common/utils/utils.ets @@ -395,7 +395,20 @@ function mkRslt(arr) { export function getPermissionGroup(permission: string) { for (var i = 0; i < permissionGroups.length; i++) { if (permissionGroups[i].permissionName == permission) { - return groups[permissionGroups[i].groupId]; + if(permissionGroups[i].groupName == 'OTHER') { + return { + "name": permissionGroups[i].groupName, + "groupName": permissionGroups[i].groupName, + "label": permissionGroups[i].label, + "icon": permissionGroups[i].icon, + "description": "", + "permissions": [ + permissionGroups[i].permissionName + ] + } + }else { + return groups[permissionGroups[i].groupId] + } } } } diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-secondary.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-secondary.ets index 87805e41d..e58940276 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-secondary.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-secondary.ets @@ -204,7 +204,7 @@ struct appNamePlusPage { Row() { Column() { Row() { - backBar({ title: JSON.stringify(this.routerData.labelId) }) + backBar({ title: JSON.stringify(this.routerData.labelId), recordable: false }) } Row() { Column() { @@ -317,7 +317,7 @@ struct appNamePlusPage { } } } - } + }.scrollBar(BarState.Off) } } .width(Constants.FULL_WIDTH) diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-tertiary.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-tertiary.ets index ec4380c75..bdddffb82 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-tertiary.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/application-tertiary.ets @@ -90,7 +90,7 @@ struct mediaDocumentPage { Row() { Column() { Row() { - backBar({ title: JSON.stringify(backTitle) }) + backBar({ title: JSON.stringify(backTitle), recordable: false }) } Row() { Column() { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-management.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-management.ets index 64ce65992..1a7057028 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-management.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-management.ets @@ -84,11 +84,13 @@ struct authorityManagementPage { } if (!index) { Row() { - Column() - .backgroundColor($r('app.color.text_decoration_color')) - .width(Constants.MANAGEMENT_TEXT_DECORATION_WIDTH) - .height(Constants.TEXT_DECORATION_HEIGHT) - .margin({ left: Constants.MANAGEMENT_TEXT_DECORATION_MARGIN_LEFT }) + Flex() { + Column().width(Constants.MANAGEMENT_TEXT_DECORATION_MARGIN_LEFT) + Column() + .backgroundColor($r('app.color.text_decoration_color')) + .height(Constants.TEXT_DECORATION_HEIGHT) + .flexGrow(Constants.FLEX_GROW) + } } } }.onClick(() => { @@ -446,7 +448,7 @@ struct authorityManagementPage { Row() { Column() { Row() { - backBar( { title: JSON.stringify($r('app.string.authority_management')) }) + backBar( { title: JSON.stringify($r('app.string.authority_management')), recordable: false }) } Row() { Column() { @@ -476,8 +478,7 @@ struct authorityManagementPage { right: Constants.MANAGEMENT_ROW_PADDING_RIGHT, top: Constants.MANAGEMENT_ROW_PADDING_TOP }) - .height(Constants.FULL_HEIGHT) - } + }.scrollBar(BarState.Off) }.width(Constants.FULL_WIDTH) } }.tabBar($r('app.string.authority')) @@ -555,12 +556,14 @@ struct applicationItem { } if (!index) { Row() { - Column() - .backgroundColor($r('app.color.text_decoration_color')) - .width(Constants.APPLICATION_TEXT_DECORATION_WIDTH) - .height(Constants.TEXT_DECORATION_HEIGHT) - .margin({ left: Constants.APPLICATION_TEXT_DECORATION_MARGIN_LEFT }) - } + Flex() { + Column().width(Constants.APPLICATION_TEXT_DECORATION_MARGIN_LEFT) + Column() + .backgroundColor($r('app.color.text_decoration_color')) + .height(Constants.TEXT_DECORATION_HEIGHT) + .flexGrow(Constants.FLEX_GROW) + } + }.padding({ right: Constants.APPLICATION_LIST_PADDING_RIGHT }) } }.onClick(() => { router.push({ @@ -589,24 +592,24 @@ struct applicationItem { top: Constants.APPLICATION_TEXTINPUT_PADDING_TOP, right: Constants.APPLICATION_TEXTINPUT_PADDING_RIGHT }) - Scroll() { - Row() { - Flex({ alignItems: ItemAlign.Start }) { - Column() { + Row() { + Flex({ alignItems: ItemAlign.Start }) { + Column() { + Scroll() { if (!this.applicationItem.length) { if (this.searchResult) { Row() { List() { ForEach(this.applicationItem.slice(Constants.SLICE_START, this.applicationItem.length - 1), - (item) => { - this.ListItemLayout(item, Constants.SLICE_START_INDEX) - }, item => item.toString()) + (item) => { + this.ListItemLayout(item, Constants.SLICE_START_INDEX) + }, item => item.toString()) ForEach(this.applicationItem.slice(Constants.SLICE_END), (item, index) => { this.ListItemLayout(item, Constants.SLICE_END_INDEX) }, item => item.toString()) }.backgroundColor($r('app.color.default_background_color')).borderRadius(Constants.BORDER_RADIUS) }.margin({ top: Constants.MANAGEMENT_ROW_MARGIN_TOP }) - .padding({ left: Constants.MANAGEMENT_ROW_PADDING_LEFT }) + .padding({ left: Constants.MANAGEMENT_ROW_PADDING_LEFT }) } else { Row() { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { @@ -620,27 +623,27 @@ struct applicationItem { Row() { List() { ForEach(this.applicationItem.slice(Constants.SLICE_START, this.applicationItem.length - 1), - (item) => { - this.ListItemLayout(item, Constants.SLICE_START_INDEX) - }, item => item.toString()) + (item) => { + this.ListItemLayout(item, Constants.SLICE_START_INDEX) + }, item => item.toString()) ForEach(this.applicationItem.slice(Constants.SLICE_END), (item, index) => { this.ListItemLayout(item, Constants.SLICE_END_INDEX) }, item => item.toString()) }.backgroundColor($r('app.color.default_background_color')) - .borderRadius(Constants.BORDER_RADIUS) - .padding({ top: Constants.LIST_PADDING_TOP, bottom: Constants.LIST_PADDING_BOTTOM }) - }.margin({ top: Constants.MANAGEMENT_ROW_MARGIN_TOP }) - .padding({ left: Constants.MANAGEMENT_ROW_PADDING_LEFT }) + .borderRadius(Constants.BORDER_RADIUS) + .padding({ top: Constants.LIST_PADDING_TOP, bottom: Constants.LIST_PADDING_BOTTOM }) + }.padding({ left: Constants.MANAGEMENT_ROW_PADDING_LEFT }) } - } - .backgroundColor($r('app.color.background_color')) - .height(Constants.APPLICATION_COLUMN_HEIGHT) - Column() { - alphabetIndexerComponent({ applicationItem: $applicationItem, oldApplicationItem: $oldApplicationItem }) - } - .margin({ top: Constants.APPLICATION_ALPHABETINDEX_MARGIN_TOP }) - .width(Constants.APPLICATION_ALPHABETINDEX_WIDTH) + }.margin({ top: Constants.MANAGEMENT_ROW_MARGIN_TOP }) + .scrollBar(BarState.Off) + } + .backgroundColor($r('app.color.background_color')) + .margin({ bottom: Constants.APPLICATION_LIST_MARGIN_BOTTOM }) + Column() { + alphabetIndexerComponent({ applicationItem: $applicationItem, oldApplicationItem: $oldApplicationItem }) } + .margin({ top: Constants.APPLICATION_ALPHABETINDEX_MARGIN_TOP }) + .width(Constants.APPLICATION_ALPHABETINDEX_WIDTH) } } } diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-secondary.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-secondary.ets index 11d7b62b4..d0f2306e0 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-secondary.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-secondary.ets @@ -54,7 +54,7 @@ struct appNamePage { Row() { Column() { Row() { - backBar({ title: JSON.stringify(this.backTitle) }) + backBar({ title: JSON.stringify(this.backTitle), recordable: false }) } Row() { Column() { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary-groups.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary-groups.ets index 960f33bcb..0339a0f6c 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary-groups.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary-groups.ets @@ -79,7 +79,7 @@ struct locationInfoPage { Row() { Column() { Row() { - backBar({ title: JSON.stringify(backTitle) }) + backBar({ title: JSON.stringify(backTitle), recordable: false }) } Row() { Column() { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary.ets index 6912f74fa..7fe2c1f73 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/authority-tertiary.ets @@ -74,7 +74,7 @@ struct locationInfoPage { Row() { Column() { Row() { - backBar({ title: JSON.stringify(backTitle) }) + backBar({ title: JSON.stringify(backTitle), recordable: false }) } Row() { Column() { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/other-permissions.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/other-permissions.ets index 7a0882c75..831063aac 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/other-permissions.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/other-permissions.ets @@ -51,7 +51,7 @@ struct appNamePage { Row() { Column() { Row() { - backBar({ title: JSON.stringify(backTitle) }) + backBar({ title: JSON.stringify(backTitle), recordable: false }) } Row() { Column() { diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/permission-access-record.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/permission-access-record.ets new file mode 100644 index 000000000..faefb7b77 --- /dev/null +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/MainAbility/pages/permission-access-record.ets @@ -0,0 +1,490 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import bundle from '@ohos.bundle'; +import router from '@system.router'; +import Resmgr from '@ohos.resourceManager' +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; +import privacyManager from '@ohos.privacyManager' +import { backBar } from "../common/components/backBar.ets"; +import Constants from '../common/utils/constant.ets'; +import { groups, noNeedDisplayApp, userGrantPermissions, permissionGroupIds } from "../common/model/permissionGroup.ets"; +import { getPermissionGroup } from '../common/utils/utils.ets' + +var TAG = 'PermissionManager_MainAbility:' + +@Extend(Image) function customizeImage(width: number, height: number) { + .objectFit(ImageFit.Contain) + .width(width) + .height(height) +}; + +@Entry +@Component +struct permissionRecordPage { + @State applicationInfos: any[] = [] + @State appInfos: any[] = [] + @State permissionApplications: any[] = [] + @State permissionIndex: number = -1 + @State applicationIndex: number = -1 + @State strings: any = {} + + @Builder ListItemLayout(item, index, dimension) { + ListItem() { + Column() { + Column() { + Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) { + Row() { + if(dimension) { + Image(item.icon) + .customizeImage(Constants.MANAGEMENT_IMAGE_WIDTH, Constants.MANAGEMENT_IMAGE_HEIGHT) + .margin({ right: Constants.MANAGEMENT_IMAGE_MARGIN_RIGHT_RECORD, left: Constants.MANAGEMENT_IMAGE_MARGIN_LEFT }) + }else { + Image(item.icon) + .customizeImage(Constants.APPLICATION_IMAGE_WIDTH, Constants.APPLICATION_IMAGE_HEIGHT) + .margin({ right: Constants.MANAGEMENT_IMAGE_MARGIN_RIGHT }) + } + Column() { + Text(item.groupName) + .fontSize(Constants.TEXT_MIDDLE_FONT_SIZE) + .fontWeight(FontWeight.Medium) + .fontColor($r('app.color.label_color')) + .lineHeight(Constants.TEXT_LINE_HEIGHT) + .margin({ bottom: Constants.TERTIARY_LABEL_MARGIN_BOTTOM }) + if(dimension) { + Text($r("app.string.visits")) + .fontSize(Constants.TEXT_SMAL_FONT_SIZE) + .fontColor($r('app.color.label_color_light')) + .lineHeight(Constants.TEXT_SMALL_LINE_HEIGHT) + }else { + Row() { + if (item.permissions) { + ForEach(item.permissions, permission => { + Image(permission.icon) + .customizeImage(Constants.IMAGE_WIDTH_RECORD_APPLICATION, Constants.IMAGE_HEIGHT_RECORD_APPLICATION) + .margin({ right: Constants.APPLICATION_TEXT_MARGIN_RIGHT }) + }) + } + } + } + }.flexGrow(Constants.FLEX_GROW) + .alignItems(HorizontalAlign.Start) + if(dimension) { + if(index == this.permissionIndex) { + Image($r('app.media.xiangshangjiantou')) + .customizeImage(Constants.IMAGE_WIDTH_RECORD, Constants.IMAGE_HEIGHT_RECORD) + }else { + Image($r('app.media.xiangxiajiantou')) + .customizeImage(Constants.IMAGE_WIDTH_RECORD, Constants.IMAGE_HEIGHT_RECORD) + } + }else { + if(index == this.applicationIndex) { + Image($r('app.media.xiangshangjiantou')) + .customizeImage(Constants.IMAGE_WIDTH_RECORD, Constants.IMAGE_HEIGHT_RECORD) + }else { + Image($r('app.media.xiangxiajiantou')) + .customizeImage(Constants.IMAGE_WIDTH_RECORD, Constants.IMAGE_HEIGHT_RECORD) + } + } + } + .width(Constants.FULL_WIDTH) + .height(dimension ? Constants.LISTITEM_HEIGHT_PERMISSION : Constants.LISTITEM_HEIGHT_APPLICATION) + } + }.onClick(() => { + dimension ? + (this.permissionIndex = this.permissionIndex == index ? -1 : index) : + (this.applicationIndex = this.applicationIndex == index ? -1 : index) + if(dimension) { + this.permissionApplications = this.appInfos.filter(appInfo => { + return appInfo.groupIds.includes(index.toString()) + }) + }else { + this.getRecords(item.accessTokenId, index) + } + }) + if(dimension && (index == this.permissionIndex)) { + List() { + ForEach(this.permissionApplications, (permissionApplication) => { + ListItem() { + Row() { + Image(permissionApplication.icon) + .customizeImage(Constants.APPLICATION_IMAGE_WIDTH, Constants.APPLICATION_IMAGE_HEIGHT) + .margin({ right: Constants.MANAGEMENT_IMAGE_MARGIN_RIGHT }) + Column() { + Row().width(Constants.FULL_WIDTH).height(Constants.TEXT_DECORATION_HEIGHT) + .backgroundColor($r("app.color.label_color_lightest")) + .margin({ bottom: Constants.LISTITEM_MARGIN_BOTTOM_PERMISSION }) + Text(permissionApplication.groupName) + .fontSize(Constants.TEXT_MIDDLE_FONT_SIZE) + .fontWeight(FontWeight.Medium) + .fontColor($r('app.color.label_color')) + .lineHeight(Constants.TEXT_LINE_HEIGHT) + .margin({ bottom: Constants.TERTIARY_LABEL_MARGIN_BOTTOM }) + Text($r("app.string.visits")) + .fontSize(Constants.TEXT_SMAL_FONT_SIZE) + .fontColor($r('app.color.label_color_light')) + .lineHeight(Constants.TEXT_SMALL_LINE_HEIGHT) + }.alignItems(HorizontalAlign.Start) + .height(Constants.FULL_HEIGHT) + } + }.height(Constants.LISTITEM_HEIGHT_PERMISSION) + .onClick(() => { + router.push({ + uri: 'pages/application-secondary', + params: { routerData: { + 'bundleName': permissionApplication.name, + 'tokenId': permissionApplication.accessTokenId, + 'iconId': permissionApplication.icon, + 'labelId': permissionApplication.groupName, + 'permissions': permissionApplication.reqUserPermissions, + 'groupId': permissionApplication.groupIds + } } + }); + }) + }) + } + } + if(!dimension && (index == this.applicationIndex)) { + List() { + ForEach(item.permissions, (permission) => { + ListItem() { + Row() { + Image(permission.icon) + .customizeImage(Constants.MANAGEMENT_IMAGE_WIDTH, Constants.MANAGEMENT_IMAGE_HEIGHT) + .margin({ right: Constants.MANAGEMENT_IMAGE_MARGIN_RIGHT_RECORD, left: Constants.MANAGEMENT_IMAGE_MARGIN_LEFT }) + Column() { + Row().width(Constants.FULL_WIDTH).height(Constants.TEXT_DECORATION_HEIGHT) + .backgroundColor($r("app.color.label_color_lightest")) + .margin({ bottom: Constants.LISTITEM_MARGIN_BOTTOM_APPLICATION }) + Text(permission.label || permission.groupName) + .fontSize(Constants.TEXT_MIDDLE_FONT_SIZE) + .fontWeight(FontWeight.Medium) + .fontColor($r('app.color.label_color')) + .lineHeight(Constants.TEXT_LINE_HEIGHT) + .margin({ bottom: Constants.TERTIARY_LABEL_MARGIN_BOTTOM }) + Text(this.strings.visits + permission.count + this.strings.recent_visit + this.getTime(permission.lastTime)) + .fontSize(Constants.TEXT_SMAL_FONT_SIZE) + .fontColor($r('app.color.label_color_light')) + .lineHeight(Constants.TEXT_SMALL_LINE_HEIGHT) + }.alignItems(HorizontalAlign.Start) + .height(Constants.FULL_HEIGHT) + } + }.height(Constants.LISTITEM_HEIGHT_APPLICATION) + .onClick(() => { + router.push({ + uri: 'pages/application-secondary', + params: { routerData: { + 'bundleName': item.name, + 'tokenId': item.accessTokenId, + 'iconId': item.icon, + 'labelId': item.groupName, + 'permissions': item.reqUserPermissions, + 'groupId': item.groupIds + } } + }); + }) + }) + } + } + } + }.padding({ left: dimension ? Constants.LISTITEM_PADDING_LEFT_RECORD : Constants.LISTITEM_PADDING_LEFT, + right: Constants.LISTITEM_PADDING_RIGHT }) + .margin({ bottom: Constants.LISTITEM_MARGIN_BOTTOM }) + .backgroundColor($r('app.color.default_background_color')) + .borderRadius(Constants.BORDER_RADIUS) + } + + build() { + GridContainer({ gutter: Constants.GUTTER, margin: Constants.GRID_MARGIN }) { + Row() { + Row() + .useSizeType({ + xs: { span: Constants.LEFT_XS_SPAN, offset: Constants.LEFT_XS_OFFSET }, + sm: { span: Constants.LEFT_SM_SPAN, offset: Constants.LEFT_SM_OFFSET }, + md: { span: Constants.LEFT_MD_SPAN, offset: Constants.LEFT_MD_OFFSET }, + lg: { span: Constants.LEFT_LG_SPAN, offset: Constants.LEFT_LG_OFFSET } + }) + .height(Constants.FULL_HEIGHT) + Row() { + Column() { + Row() { + backBar( { title: JSON.stringify($r('app.string.permission_access_record')), recordable: false }) + } + Row() { + Column() { + Column() { + Stack() { + Tabs() { + TabContent() { + Row() { + Column() { + Scroll() { + Row() { + List() { + ForEach(groups, (item, index) => { + this.ListItemLayout(item, index, Constants.PERMISSION) + }, item => item.toString()) + }.padding({ top: Constants.LIST_PADDING_TOP, bottom: Constants.LIST_PADDING_BOTTOM }) + }.padding({ + left: Constants.MANAGEMENT_ROW_PADDING_LEFT, + right: Constants.MANAGEMENT_ROW_PADDING_RIGHT, + top: Constants.MANAGEMENT_ROW_PADDING_TOP + }) + }.scrollBar(BarState.Off) + }.width(Constants.FULL_WIDTH) + } + }.tabBar($r('app.string.authority')) + TabContent() { + Row() { + Column() { + Scroll() { + Row() { + List() { + ForEach(this.appInfos, (item, index) => { + this.ListItemLayout(item, index, Constants.APPLICATION) + }, item => item.toString()) + }.padding({ top: Constants.LIST_PADDING_TOP, bottom: Constants.LIST_PADDING_BOTTOM }) + }.padding({ + left: Constants.MANAGEMENT_ROW_PADDING_LEFT, + right: Constants.MANAGEMENT_ROW_PADDING_RIGHT, + top: Constants.MANAGEMENT_ROW_PADDING_TOP + }) + }.scrollBar(BarState.Off) + }.width(Constants.FULL_WIDTH) + } + }.tabBar($r('app.string.application')) + } + .barWidth(Constants.BAR_WIDTH) + .barMode(BarMode.Fixed) + }.height(Constants.FULL_HEIGHT) + } + } + } + .layoutWeight(Constants.LAYOUT_WEIGHT) + } + } + .useSizeType({ + xs: { span: Constants.MIDDLE_XS_SPAN, offset: Constants.MIDDLE_XS_OFFSET }, + sm: { span: Constants.MIDDLE_SM_SPAN, offset: Constants.MIDDLE_SM_OFFSET }, + md: { span: Constants.MIDDLE_MD_SPAN, offset: Constants.MIDDLE_MD_OFFSET }, + lg: { span: Constants.MIDDLE_LG_SPAN, offset: Constants.MIDDLE_LG_OFFSET } + }) + .height(Constants.FULL_HEIGHT) + Row() + .useSizeType({ + xs: { span: Constants.RIGHT_XS_SPAN, offset: Constants.RIGHT_XS_OFFSET }, + sm: { span: Constants.RIGHT_SM_SPAN, offset: Constants.RIGHT_SM_OFFSET }, + md: { span: Constants.RIGHT_MD_SPAN, offset: Constants.RIGHT_MD_OFFSET }, + lg: { span: Constants.RIGHT_LG_SPAN, offset: Constants.RIGHT_LG_OFFSET } + }) + .height(Constants.FULL_HEIGHT) + } + .height(Constants.FULL_HEIGHT) + .width(Constants.FULL_WIDTH) + .backgroundColor($r("sys.color.ohos_id_color_sub_background")) + .opacity(Constants.MANAGEMENT_TRANSPARENCY) + } + } + +/** + * Get time + * @param {Number} The time stamp + */ + getTime(time, format='MM月DD日 NNHH:mm') { + if(this.strings.morning == 'am') { format = 'MM/DD HH:mm NN' } + let date = new Date(time) + let config = { + MM: date.getMonth() + 1, + DD: date.getDate(), + NN: date.getHours() >= 12 ? this.strings.afternoon : this.strings.morning, + HH: date.getHours() >= 12 ? date.getHours() - 12 : date.getHours(), + mm: date.getMinutes() > 10 ? date.getMinutes() : '0' + date.getMinutes(), + } + + for(const key in config){ + format = format.replace(key,config[key]) + } + return format + } + +/** + * Get app name resource + * @param {Number} index index of all app permissions array + * @param {String} bundleName Package names + */ + updateAppLabel(index, bundleName) { + Resmgr.getResourceManager(bundleName).then(item => { + if (index >= this.applicationInfos.length) { + return; + } + var info = this.applicationInfos[index]; + item.getString(info['labelId'], (error, value) => { + if (value == undefined) { + info['groupName'] = info.label; + } else { + info['groupName'] = value; + } + }) + }).catch(error => { + console.error(TAG + 'Resmgr.getResourceManager failed. Cause: ' + JSON.stringify(error)); + }) + } + +/** + * Get app icon resources + * @param {Number} index index of all app permissions array + * @param {String} bundleName Package names + */ + updateAppIcon(index, bundleName) { + Resmgr.getResourceManager(bundleName).then(item => { + if (index >= this.applicationInfos.length) { + return; + } + var info = this.applicationInfos[index]; + item.getMediaBase64(info['iconId'], (error, value) => { + info['icon'] = value; + }) + }).catch(error => { + console.error(TAG + 'Resmgr.getResourceManager failed. Cause: ' + JSON.stringify(error)); + }) + } + + async getApplicationInfo(info) { + var reqUserPermissions: string[] = []; + var permissionGroups: any[] = []; + var acManager = abilityAccessCtrl.createAtManager() + for (let j = 0; j < info.reqPermissions.length; j++) { + var permission = info.reqPermissions[j]; + var flag = await acManager.getPermissionFlags(info.appInfo.accessTokenId, permission) + if(flag == Constants.PRE_AUTHORIZATION_NOT_MODIFIED) { + continue + } + if (userGrantPermissions.indexOf(permission) != -1) { + reqUserPermissions.push(permission); + } + } + reqUserPermissions.forEach(permission => { + var group = getPermissionGroup(permission) + if(!group) { + console.info(TAG + "permission not find:" + permission) + }else { + var exist = permissionGroups.find(permissionGroup => permissionGroup.name == group.name) + if(!exist) { + group.count = 0 + group.lastTime = 0 + permissionGroups.push(group) + } + } + }) + + let groupIds = []; + for (let i = 0; i < reqUserPermissions.length; i++) { + if(groupIds.indexOf(permissionGroupIds[reqUserPermissions[i]]) == -1){ + groupIds.push(permissionGroupIds[reqUserPermissions[i]]); + } + } + + info.appInfo.reqUserPermissions = reqUserPermissions + info.appInfo.permissions = permissionGroups + info.appInfo.groupIds = groupIds + this.applicationInfos.push(info.appInfo) + } + + getApplicationPermissions() { + bundle.getAllBundleInfo(Constants.PARMETER_BUNDLE_FLAG).then(async allBundleInfo => { + if (allBundleInfo.length <= 0) { + console.info(TAG + 'bundle.getAllBundleInfo result.length less than or equal to zero'); + return; + } + var infoIndex = 0; + const this_ = this; + for (let i = 0; i < allBundleInfo.length; i++) { + var info = allBundleInfo[i]; + // Filter blank icon icon and text label resources + try { + const ret = await bundle.queryAbilityByWant({ + bundleName: info.name, + action: "action.system.home", + entities: ["entity.system.home"] + }, bundle.BundleFlag.GET_ABILITY_INFO_WITH_APPLICATION, Constants.USERID); + } catch(e) { + continue; + } + + if (noNeedDisplayApp.indexOf(info.name) != -1) { + continue; + } + await this.getApplicationInfo(info); + this.updateAppLabel(infoIndex, info.name); + this.updateAppIcon(infoIndex, info.name); + infoIndex ++; + } + setTimeout(function(){ this_.appInfos = this_.applicationInfos }, 10) + }) + } + + getRecords(tokenId, index) { + let request = { + "tokenId": tokenId, + "isRemote": false, + "permissionNames": [], + "beginTime": 0, + "endTime": 0, + "flag": 1 + } + privacyManager.getPermissionUsedRecords(request).then(records => { + console.info(TAG + "records: " + JSON.stringify(records.bundleRecords)) + if(records.bundleRecords.length) { + records.bundleRecords.permissionRecords.forEach(permissionRecord => { + this.appInfos[index].permissions.forEach(group => { + if(group.permissions.includes(permissionRecord.permissionName)) { + group.count += permissionRecord.accessCount + group.count += permissionRecord.rejectCount + var lastTime = permissionRecord.lastAccessTime > permissionRecord.lastRejectTime + ? permissionRecord.lastAccessTime : permissionRecord.lastRejectTime + lastTime > group.lastTime ? group.lastTime = lastTime : '' + } + }) + }) + } + }).catch(error => { + console.error(TAG + 'getPermissionUsedRecords failed. Cause: ' + JSON.stringify(error)); + }) + } + + getStrings() { + Resmgr.getResourceManager(Constants.BUNDLE_NAME).then(item => { + item.getString($r("app.string.visits").id, (err, val) => { + this.strings.visits = val + }) + item.getString($r("app.string.recent_visit").id, (err, val) => { + this.strings.recent_visit = val + }) + item.getString($r("app.string.morning").id, (err, val) => { + this.strings.morning = val + }) + item.getString($r("app.string.afternoon").id, (err, val) => { + this.strings.afternoon = val + }) + }).catch(error => { + console.error(TAG + 'Resmgr.getResourceManager failed. Cause: ' + JSON.stringify(error)); + }) + } + + aboutToAppear() { + this.getApplicationPermissions() + this.getStrings() + } +} diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/color.json b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/color.json index 338e7bda2..683aa6658 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/color.json +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/color.json @@ -16,6 +16,10 @@ "name": "label_color_lighter", "value": "#66182431" }, + { + "name": "label_color_lightest", + "value": "#0D182431" + }, { "name": "background_color", "value": "#F4F5F7" diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/string.json b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/string.json index 21b12d11c..9fc01079c 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/string.json +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/element/string.json @@ -2,103 +2,87 @@ "string": [ { "name": "permissionmanager_MainAbility", - "value": "permissionmanager_MainAbility" + "value": "authority management" }, { "name": "description_mainability", - "value": "eTS_Empty Ability" - }, - { - "name": "entry_MainAbility", - "value": "entry_MainAbility" + "value": "authority management" }, { "name": "permissionmanager_GrantAbility", - "value": "permissionmanager_GrantAbility" - }, - { - "name": "permissionmanager_description", - "value": "eTS_Empty Ability" + "value": "apply for permission" }, { "name": "no_permission", - "value": "暂无权限" - }, - { - "name": "no_data", - "value": "暂无数据" + "value": "no permission" }, { "name": "access_permission", - "value": "访问权限" + "value": "access permission" }, { "name": "permission_access_record", - "value": "权限访问记录" + "value": "permission access record" }, { "name": "authority_management", - "value": "权限管理" - }, - { - "name": "authority_tertiary_description", - "value": "个应用获取此权限" + "value": "authority management" }, { "name": "other_permissions", - "value": "其它权限" + "value": "other permissions" }, { "name": "application", - "value": " 应用 " + "value": " application " }, { "name": "authority", - "value": " 权限 " - }, - { - "name": "media_document", - "value": "媒体和文件" + "value": " authority " }, { "name": "textInput_placeholder", - "value": "搜索应用" + "value": "search application" }, { "name": "allowed", - "value": "已允许" + "value": "allowed" }, { "name": "banned", - "value": "已禁止" + "value": "banned" }, { "name": "description_grantability", - "value": "eTS_Empty Ability" + "value": "apply for permission" }, { - "name": "entry_GrantAbility", - "value": "entry_GrantAbility" + "name": "Authorization_failed", + "value": "Authorization failure!" }, { - "name": "Authorization_failed", - "value": "授权失败!" + "name": "reason_suffix", + "value": " and other permissions." }, { - "name": "other_permission_label", - "value": "多设备协同" + "name": "separator", + "value": "," }, { - "name": "other_permission_label_description", - "value": "多设备协同访问权限" + "name": "visits", + "value": "Number of visits:" }, { - "name": "reason_suffix", - "value": "等权限。" + "name": "recent_visit", + "value": ";Recent visits:" }, { - "name": "separator", - "value": "、" + "name": "morning", + "value": "am" + }, + { + "name": "afternoon", + "value": "pm" } ] } \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/gongneng_dian.svg b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/gongneng_dian.svg new file mode 100644 index 000000000..50265c1b1 --- /dev/null +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/gongneng_dian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/ic_multi_device_vector.svg b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/ic_multi_device_vector.svg index 00f9c08ea..b85bdf10a 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/ic_multi_device_vector.svg +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/ic_multi_device_vector.svg @@ -2,6 +2,6 @@ HM/ic/24x24/Multi-device vector - + \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangshangjiantou.svg b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangshangjiantou.svg new file mode 100644 index 000000000..24d372dc5 --- /dev/null +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangshangjiantou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangxiajiantou.svg b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangxiajiantou.svg new file mode 100644 index 000000000..42116e213 --- /dev/null +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/base/media/xiangxiajiantou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/zh_CN/element/string.json b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/zh_CN/element/string.json new file mode 100644 index 000000000..eff2b33b0 --- /dev/null +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,88 @@ +{ + "string": [ + { + "name": "permissionmanager_MainAbility", + "value": "权限管理" + }, + { + "name": "description_mainability", + "value": "权限管理" + }, + { + "name": "permissionmanager_GrantAbility", + "value": "权限申请" + }, + { + "name": "no_permission", + "value": "暂无权限" + }, + { + "name": "access_permission", + "value": "访问权限" + }, + { + "name": "permission_access_record", + "value": "权限访问记录" + }, + { + "name": "authority_management", + "value": "权限管理" + }, + { + "name": "other_permissions", + "value": "其它权限" + }, + { + "name": "application", + "value": " 应用 " + }, + { + "name": "authority", + "value": " 权限 " + }, + { + "name": "textInput_placeholder", + "value": "搜索应用" + }, + { + "name": "allowed", + "value": "已允许" + }, + { + "name": "banned", + "value": "已禁止" + }, + { + "name": "description_grantability", + "value": "权限申请" + }, + { + "name": "Authorization_failed", + "value": "授权失败!" + }, + { + "name": "reason_suffix", + "value": "等权限。" + }, + { + "name": "separator", + "value": "、" + }, + { + "name": "visits", + "value": "访问次数:" + }, + { + "name": "recent_visit", + "value": ";最近访问:" + }, + { + "name": "morning", + "value": "上午" + }, + { + "name": "afternoon", + "value": "下午" + } + ] +} \ No newline at end of file -- Gitee