diff --git a/window_scene/session_manager/include/scene_session_manager.h b/window_scene/session_manager/include/scene_session_manager.h index c60919481f9192e35d0ce19b31c147c48bc1e525..cd2bd5c09986cf8a4a67f78f1f7702265ef6be18 100644 --- a/window_scene/session_manager/include/scene_session_manager.h +++ b/window_scene/session_manager/include/scene_session_manager.h @@ -1315,6 +1315,7 @@ private: */ std::unique_ptr snapshotLruCache_; std::size_t snapshotCapacity_ = 0; + bool GetIconFromDesk(const SessionInfo& sessionInfo, std::string& startupPagePath) const; }; } // namespace OHOS::Rosen diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index c0226724cca181d4fb7ea4749d924c436c664839..a6b920d592a3a2874ccdc1d2318f73eecd85ee61 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -4270,8 +4270,27 @@ bool SceneSessionManager::GetStartupPageFromResource(const AppExecFwk::AbilityIn return true; } +bool SceneSessionManager::GetIconFromDesk(const SessionInfo& sessionInfo, std::string& startupPagePath) const +{ + auto& want = sessionInfo.want; + if (want == nullptr) { + TLOGI(WmsLogTag::WMS_PATTERN, "want is nullPtr"); + return false; + } + startupPagePath = want->GetStringParam("realAppIcon"); + if (startupPagePath.empty()) { + return false; + } + return true; +} + void SceneSessionManager::GetStartupPage(const SessionInfo& sessionInfo, std::string& path, uint32_t& bgColor) { + if (GetIconFromDesk(sessionInfo, path)) { + TLOGI(WmsLogTag::WMS_PATTERN, "get icon from desk success"); + return; + } + if (!bundleMgr_) { TLOGE(WmsLogTag::WMS_PATTERN, "bundleMgr_ is nullptr."); return;