From 4d0851c725462ef096a8f5d86deea4b8615240ef Mon Sep 17 00:00:00 2001 From: y1585740638 Date: Tue, 20 Sep 2022 21:10:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=89=E8=B5=B7=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: y1585740638 Change-Id: If34fc36282329b24a29a2e0015700ba539773b83 --- .../sensitive/sensitive_resource_manager.h | 1 + .../sensitive/sensitive_resource_manager.cpp | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/services/privacymanager/include/sensitive/sensitive_resource_manager.h b/services/privacymanager/include/sensitive/sensitive_resource_manager.h index 6dc2c8d5a..a3d0adc2e 100644 --- a/services/privacymanager/include/sensitive/sensitive_resource_manager.h +++ b/services/privacymanager/include/sensitive/sensitive_resource_manager.h @@ -54,6 +54,7 @@ public: bool RegisterAppStatusChangeCallback(uint32_t tokenId, OnAppStatusChangeCallback callback); bool UnRegisterAppStatusChangeCallback(uint32_t tokenId, OnAppStatusChangeCallback callback); + void ShowDialog(const ResourceType& type); private: bool InitProxy(); OHOS::sptr GetAppManagerProxy(); diff --git a/services/privacymanager/src/sensitive/sensitive_resource_manager.cpp b/services/privacymanager/src/sensitive/sensitive_resource_manager.cpp index 46aea1b19..87a6039c5 100644 --- a/services/privacymanager/src/sensitive/sensitive_resource_manager.cpp +++ b/services/privacymanager/src/sensitive/sensitive_resource_manager.cpp @@ -33,6 +33,10 @@ static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { static const size_t MAX_CALLBACK_SIZE = 200; } +static const std::string PERMISSION_MANAGER_BUNDLE_NAME = "com.ohos.permissionmanager"; +static const std::string PERMISSION_MANAGER_DIALOG_ABILITY = "com.ohos.permissionmanager.GlobalExtAbility"; +static const std::string RESOURCE_KEY = "ohos.sensitive.resource"; + SensitiveResourceManager& SensitiveResourceManager::GetInstance() { static SensitiveResourceManager instance; @@ -208,6 +212,30 @@ bool SensitiveResourceManager::UnRegisterAppStatusChangeCallback(uint32_t tokenI return true; } + +void SensitiveResourceManager::ShowDialog(const ResourceType& type) +{ + AAFwk::Want want; + want.SetElementName(PERMISSION_MANAGER_BUNDLE_NAME, PERMISSION_MANAGER_DIALOG_ABILITY); + std::string typeStr = ""; + switch (type) { + case ResourceType::CAMERA: + typeStr = "camera"; + break; + case ResourceType::MICROPHONE: + typeStr = "microphone"; + break; + default: + break; + } + want.SetParam(RESOURCE_KEY, typeStr); + ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, nullptr); + if (err != ERR_OK) { + ACCESSTOKEN_LOG_ERROR(LABEL, "Fail to StartAbility, err:%{public}d", err); + return; + } + return; +} } // namespace AccessToken } // namespace Security } // namespace OHOS \ No newline at end of file -- Gitee