From 78be2545b0920e6c1bd66777ef41c989061bb3a4 Mon Sep 17 00:00:00 2001 From: fanchenxuan Date: Thu, 15 Sep 2022 14:22:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=9B=9E=E8=B0=83=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=8C=91=E5=8D=95monthly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fanchenxuan --- .../src/main/ets/common/utils/constant.ets | 1 + .../src/main/ets/pages/dialogPlus.ets | 18 ++++++++---------- .../token_callback/src/token_callback_stub.cpp | 12 +++++++++--- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/common/utils/constant.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/common/utils/constant.ets index feae6cd0e..1bfa23125 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/common/utils/constant.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/common/utils/constant.ets @@ -344,5 +344,6 @@ export default class Constants { // static INITIAL_INDEX = 10 + static ACCESS_TOKEN = 'ohos.security.accesstoken.tokencallback' } \ No newline at end of file diff --git a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/pages/dialogPlus.ets b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/pages/dialogPlus.ets index f833b2b93..240dea528 100644 --- a/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/pages/dialogPlus.ets +++ b/frameworks/com.ohos.permissionmanager/permissionmanager/src/main/ets/pages/dialogPlus.ets @@ -150,18 +150,16 @@ struct dialogPlusPage { let option = new rpc.MessageOption() let data = new rpc.MessageParcel() let reply = new rpc.MessageParcel() - if(!data.writeStringArray(perms)) { - Log.error('writeStringArray permission failed!') + Promise.all([data.writeInterfaceToken(Constants.ACCESS_TOKEN), + data.writeStringArray(perms), + data.writeIntArray(results) + ]).then(() => { + this.proxy.sendRequest(Constants.RESULT_CODE, data, reply, option) this.destruction() - return - } - if (!data.writeIntArray(results)) { - Log.error('writeIntArray result failed!') + }).catch(() => { + Log.error('write result failed!') this.destruction() - return - } - this.proxy.sendRequest(Constants.RESULT_CODE, data, reply, option) - this.destruction() + }) } destruction() { diff --git a/interfaces/innerkits/token_callback/src/token_callback_stub.cpp b/interfaces/innerkits/token_callback/src/token_callback_stub.cpp index 1d70b043e..e51cd4c87 100644 --- a/interfaces/innerkits/token_callback/src/token_callback_stub.cpp +++ b/interfaces/innerkits/token_callback/src/token_callback_stub.cpp @@ -29,6 +29,11 @@ static const int32_t LIST_SIZE_MAX = 200; static const int32_t FAILED = -1; } +static std::string to_utf8(std::u16string str16) +{ + return std::wstring_convert, char16_t> {}.to_bytes(str16); +} + int32_t TokenCallbackStub::OnRemoteRequest( uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) { @@ -43,18 +48,19 @@ int32_t TokenCallbackStub::OnRemoteRequest( if (msgCode == ITokenCallback::GRANT_RESULT_CALLBACK) { uint32_t permListSize = data.ReadUint32(); if (permListSize > LIST_SIZE_MAX) { - ACCESSTOKEN_LOG_ERROR(LABEL, "read permListSize fail"); + ACCESSTOKEN_LOG_ERROR(LABEL, "read permListSize fail %{public}u", permListSize); return FAILED; } std::vector permList; for (uint32_t i = 0; i < permListSize; i++) { - std::string perm = data.ReadString(); + std::u16string u16Perm = data.ReadString16(); + std::string perm = to_utf8(u16Perm); permList.emplace_back(perm); } uint32_t statusListSize = data.ReadUint32(); if (statusListSize != permListSize) { - ACCESSTOKEN_LOG_ERROR(LABEL, "read permListSize fail"); + ACCESSTOKEN_LOG_ERROR(LABEL, "read statusListSize fail %{public}u", statusListSize); return FAILED; } std::vector grantResults; -- Gitee