diff --git a/services/abilitymgr/include/ability_config.h b/services/abilitymgr/include/ability_config.h index 0bf081fb35a19154277ac43ece2f5e114939e4c1..8cbb024fa1c9e239af1a956fb6beea38ee1bbc8b 100644 --- a/services/abilitymgr/include/ability_config.h +++ b/services/abilitymgr/include/ability_config.h @@ -28,6 +28,7 @@ const std::string SYSTEM_UI_BUNDLE_NAME = "com.ohos.systemui"; const std::string SYSTEM_UI_STATUS_BAR = "com.ohos.systemui.statusbar.MainAbility"; const std::string SYSTEM_UI_NAVIGATION_BAR = "com.ohos.systemui.navigationbar.MainAbility"; const std::string SYSTEM_DIALOG_NAME = "com.ohos.systemui.systemdialog.MainAbility"; +const std::string SYSTEM_UI_ABILITY_NAME = "com.ohos.systemui.ServiceExtAbility"; const std::string SYSTEM_DIALOG_REQUEST_PERMISSIONS = "OHOS_RESULT_PERMISSIONS_LIST_YES"; const std::string SYSTEM_DIALOG_CALLER_BUNDLENAME = "OHOS_RESULT_CALLER_BUNDLERNAME"; diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index f480b90458bc5728c2bd6c21126788d3c83da2ea..4ae19ec8b4eaa0ae60cd14fb33dcddaacbcb302e 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -827,6 +827,12 @@ private: */ void StartingSystemUiAbility(const SatrtUiMode &mode); + /** + * starting system ui ServiceExt abilites. + * + */ + void StartingSystemUiAbility(); + /** * starting contacts ability. * diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 2fac7b522047a2e4ee0ebb37d21ab3f74a2e6db2..00b2c4d1eb241d649a7e577c00f00fdea2901e8f 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -2708,19 +2708,11 @@ void AbilityManagerService::StartSystemApplication() if (!amsConfigResolver_ || amsConfigResolver_->NonConfigFile()) { HILOG_INFO("start all"); - StartingSystemUiAbility(SatrtUiMode::STARTUIBOTH); + StartingSystemUiAbility(); return; } - if (amsConfigResolver_->GetStatusBarState()) { - HILOG_INFO("start status bar"); - StartingSystemUiAbility(SatrtUiMode::STATUSBAR); - } - - if (amsConfigResolver_->GetNavigationBarState()) { - HILOG_INFO("start navigation bar"); - StartingSystemUiAbility(SatrtUiMode::NAVIGATIONBAR); - } + StartingSystemUiAbility(); // Location may change DelayedSingleton::GetInstance()->StartupResidentProcess(); @@ -2796,6 +2788,27 @@ void AbilityManagerService::StartingSystemUiAbility(const SatrtUiMode &mode) } } +void AbilityManagerService::StartingSystemUiAbility() +{ + HILOG_DEBUG("%{public}s", __func__); + AppExecFwk::AbilityInfo systemUiInfo; + if (!iBundleManager_) { + HILOG_INFO("bms server is null"); + return; + } + Want systemUiWant; + systemUiWant.SetElementName(AbilityConfig::SYSTEM_UI_BUNDLE_NAME, AbilityConfig::SYSTEM_UI_ABILITY_NAME); + uint32_t waitCnt = 0; + // Wait 10 minutes for the installation to complete. + while (!iBundleManager_->QueryAbilityInfo(systemUiWant, systemUiInfo) && waitCnt < MAX_WAIT_SYSTEM_UI_NUM) { + HILOG_INFO("Waiting query system ui info completed."); + usleep(REPOLL_TIME_MICRO_SECONDS); + waitCnt++; + } + (void)StartAbility(systemUiWant, DEFAULT_INVAL_VALUE); +} + + bool AbilityManagerService::CheckCallerIsSystemAppByIpc() { HILOG_DEBUG("%{public}s begin", __func__);