From b70abe4ed786439b57655917d2edb25600ef8eb8 Mon Sep 17 00:00:00 2001 From: ohos-lsw Date: Mon, 27 Sep 2021 23:14:05 +0800 Subject: [PATCH 1/2] fixed 2a5e30d from https://gitee.com/ohos-lsw/aafwk_standard/pulls/91 Start phone service Signed-off-by: ohos-lsw --- services/abilitymgr/include/ability_config.h | 3 +++ .../include/ability_manager_service.h | 6 +++++ .../include/ams_configuration_parameter.h | 7 ++++++ .../resource/ams_service_config.json | 3 ++- .../src/ability_connect_manager.cpp | 11 ++++++++ .../src/ability_manager_service.cpp | 25 +++++++++++++++++++ .../src/ams_configuration_parameter.cpp | 6 +++++ 7 files changed, 60 insertions(+), 1 deletion(-) diff --git a/services/abilitymgr/include/ability_config.h b/services/abilitymgr/include/ability_config.h index 58cd30018be..b69a2deb4a2 100644 --- a/services/abilitymgr/include/ability_config.h +++ b/services/abilitymgr/include/ability_config.h @@ -46,6 +46,9 @@ const std::string FLOATING_WINDOW_PERMISSION = "ohos.permission.SYSTEM_FLOAT_WIN const std::string LAUNCHER_ABILITY_NAME = "com.ohos.launcher.MainAbility"; const std::string LAUNCHER_BUNDLE_NAME = "com.ohos.launcher"; + +const std::string PHONE_SERVICE_BUNDLE_NAME = "com.ohos.phoneservice"; +const std::string PHONE_SERVICE_ABILITY_NAME = "com.ohos.phoneservice.ServiceAbility"; } // namespace AbilityConfig } // namespace AAFwk } // namespace OHOS diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 38a3803ff91..ea4985711ac 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -575,6 +575,12 @@ private: */ void StartingLauncherAbility(); + /** + * starting phone service ability. + * + */ + void StartingPhoneServiceAbility(); + /** * starting system ui abilites. * diff --git a/services/abilitymgr/include/ams_configuration_parameter.h b/services/abilitymgr/include/ams_configuration_parameter.h index 445f5c416fc..7ad840cbad2 100644 --- a/services/abilitymgr/include/ams_configuration_parameter.h +++ b/services/abilitymgr/include/ams_configuration_parameter.h @@ -27,6 +27,7 @@ const std::string SERVICE_ITEM_AMS {"service_startup_config"}; const std::string STARTUP_LUNCHER {"startup_launcher"}; const std::string STARTUP_STATUS_BAR {"startup_system_ui_status_bar"}; const std::string STARTUP_NAVIGATION_BAR {"startup_system_ui_navigation_bar"}; +const std::string STARTUP_PHONE_SERVICE{"startup_phone_service"}; } // namespace AmsConfig enum class SatrtUiMode { STATUSBAR = 1, NAVIGATIONBAR = 2, STARTUIBOTH = 3 }; @@ -55,6 +56,11 @@ public: * return false : ams do not start system ui navigation bar */ bool GetNavigationBarState() const; + /** + * return true : ams can start phone service + * return false : ams do not start phone service + */ + bool GetPhoneServiceState() const; /** * Get profile information */ @@ -74,6 +80,7 @@ private: bool canStartLuncher {false}; bool canStartUiStatusBar {false}; bool canStartUiNavigationBar {false}; + bool canStartPhoneService{false}; }; } // namespace AAFwk } // namespace OHOS diff --git a/services/abilitymgr/resource/ams_service_config.json b/services/abilitymgr/resource/ams_service_config.json index 0dd3ebfb965..5447a58d7c1 100644 --- a/services/abilitymgr/resource/ams_service_config.json +++ b/services/abilitymgr/resource/ams_service_config.json @@ -2,7 +2,8 @@ "service_startup_config":{ "startup_launcher":true, "startup_system_ui_status_bar" : true, - "startup_system_ui_navigation_bar" : true + "startup_system_ui_navigation_bar" : true, + "startup_phone_service" : true } } diff --git a/services/abilitymgr/src/ability_connect_manager.cpp b/services/abilitymgr/src/ability_connect_manager.cpp index 47ded621884..dfa7ea42de4 100644 --- a/services/abilitymgr/src/ability_connect_manager.cpp +++ b/services/abilitymgr/src/ability_connect_manager.cpp @@ -841,6 +841,17 @@ void AbilityConnectManager::HandleAbilityDiedTask(const std::shared_ptrGetAbilityInfo().name == AbilityConfig::PHONE_SERVICE_ABILITY_NAME) { + AbilityRequest requestInfo; + requestInfo.want = abilityRecord->GetWant(); + requestInfo.abilityInfo = abilityRecord->GetAbilityInfo(); + requestInfo.appInfo = abilityRecord->GetApplicationInfo(); + + RemoveServiceAbility(abilityRecord); + StartAbilityLocked(requestInfo); + return; + } + ConnectListType connlist = abilityRecord->GetConnectRecordList(); for (auto &connectRecord : connlist) { HILOG_WARN("This record complete disconnect directly. recordId:%{public}d", connectRecord->GetRecordId()); diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index bb9c9791697..8fe359a9ecb 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -1075,6 +1075,26 @@ void AbilityManagerService::StartingLauncherAbility() return; } +void AbilityManagerService::StartingPhoneServiceAbility() +{ + HILOG_DEBUG("%{public}s", __func__); + if (!iBundleManager_) { + HILOG_INFO("bms service is null"); + return; + } + + AppExecFwk::AbilityInfo phoneServiceInfo; + Want phoneServiceWant; + phoneServiceWant.SetElementName(AbilityConfig::PHONE_SERVICE_BUNDLE_NAME, AbilityConfig::PHONE_SERVICE_ABILITY_NAME); + + while (!(iBundleManager_->QueryAbilityInfo(phoneServiceWant, phoneServiceInfo))) { + HILOG_INFO("Waiting query phone service completed."); + usleep(REPOLL_TIME_MICRO_SECONDS); + } + + (void)StartAbility(phoneServiceWant, DEFAULT_INVAL_VALUE); +} + void AbilityManagerService::StartSystemUi(const std::string abilityName) { HILOG_INFO("Starting system ui app."); @@ -1524,6 +1544,11 @@ void AbilityManagerService::StartSystemApplication() HILOG_INFO("start navigation bar"); StartingSystemUiAbility(SatrtUiMode::NAVIGATIONBAR); } + + if (amsConfigResolver_->GetPhoneServiceState()) { + HILOG_INFO("start phone service"); + StartingPhoneServiceAbility(); + } } void AbilityManagerService::ConnectBmsService() diff --git a/services/abilitymgr/src/ams_configuration_parameter.cpp b/services/abilitymgr/src/ams_configuration_parameter.cpp index 137ad2a0437..536ce39e972 100644 --- a/services/abilitymgr/src/ams_configuration_parameter.cpp +++ b/services/abilitymgr/src/ams_configuration_parameter.cpp @@ -41,6 +41,11 @@ bool AmsConfigurationParameter::GetNavigationBarState() const return canStartUiNavigationBar; } +bool AmsConfigurationParameter::GetPhoneServiceState() const +{ + return canStartPhoneService; +} + bool AmsConfigurationParameter::NonConfigFile() const { return nonConfigFile; @@ -72,6 +77,7 @@ int AmsConfigurationParameter::LoadAmsConfiguration(const std::string &filePath) canStartUiStatusBar = amsJson.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::STARTUP_STATUS_BAR).get(); canStartUiNavigationBar = amsJson.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::STARTUP_NAVIGATION_BAR).get(); + canStartPhoneService = amsJson.at(AmsConfig::SERVICE_ITEM_AMS).at(AmsConfig::STARTUP_PHONE_SERVICE).get(); HILOG_INFO("get ams service config succes!"); } else { HILOG_INFO("json no have service item ..."); -- Gitee From 72d8a014a1eca2648539490c9b346d9796891daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=AF=97=E4=BC=9F?= Date: Mon, 27 Sep 2021 16:17:09 +0000 Subject: [PATCH 2/2] update services/abilitymgr/src/ability_manager_service.cpp. --- services/abilitymgr/src/ability_manager_service.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 8fe359a9ecb..06db7b8b96b 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -1085,7 +1085,8 @@ void AbilityManagerService::StartingPhoneServiceAbility() AppExecFwk::AbilityInfo phoneServiceInfo; Want phoneServiceWant; - phoneServiceWant.SetElementName(AbilityConfig::PHONE_SERVICE_BUNDLE_NAME, AbilityConfig::PHONE_SERVICE_ABILITY_NAME); + phoneServiceWant.SetElementName(AbilityConfig::PHONE_SERVICE_BUNDLE_NAME, + AbilityConfig::PHONE_SERVICE_ABILITY_NAME); while (!(iBundleManager_->QueryAbilityInfo(phoneServiceWant, phoneServiceInfo))) { HILOG_INFO("Waiting query phone service completed."); -- Gitee