From 5e60102631d2d200423d0cbc3e6e93d88cc1743b Mon Sep 17 00:00:00 2001 From: ohos-lsw Date: Tue, 28 Sep 2021 00:22:36 +0800 Subject: [PATCH] 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 | 26 +++++++++++++++++++ .../src/ams_configuration_parameter.cpp | 6 +++++ 7 files changed, 61 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 b3c48716802..2ec58139436 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_LAUNCHER {"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 canStartLauncher {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 0921f701a43..da3b3e07a4c 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -1075,6 +1075,27 @@ 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 +1545,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 9f6c383cf6a..5f2ccb4aca7 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