diff --git a/frameworks/innerkits/file_extension/include/file_access_helper.h b/frameworks/innerkits/file_extension/include/file_access_helper.h index a3f7e3cac3a904cebdfe39bf43b019813e20798e..c032d6a39ea2ac9c5f4225826df06f0573055c98 100644 --- a/frameworks/innerkits/file_extension/include/file_access_helper.h +++ b/frameworks/innerkits/file_extension/include/file_access_helper.h @@ -37,7 +37,7 @@ public: static std::shared_ptr Creator(const std::shared_ptr &context, const AAFwk::Want &want); - + static std::shared_ptr Creator(const sptr &token, const AAFwk::Want &want); bool Release(); int OpenFile(Uri &uri, const std::string &mode); @@ -50,6 +50,8 @@ public: private: FileAccessHelper(const std::shared_ptr &context, const AAFwk::Want &want, const sptr &fileExtProxy); + FileAccessHelper(const sptr &token, + const AAFwk::Want &want, const sptr &fileExtProxy); void AddFileAccessDeathRecipient(const sptr &token); void OnSchedulerDied(const wptr &remote); diff --git a/frameworks/innerkits/file_extension/src/file_access_helper.cpp b/frameworks/innerkits/file_extension/src/file_access_helper.cpp index 6a62e048edb8bdd955cc13fa4cca487d62ec9ead..c64dd63d7dc89ae888a14fcf5222f74af63aba08 100644 --- a/frameworks/innerkits/file_extension/src/file_access_helper.cpp +++ b/frameworks/innerkits/file_extension/src/file_access_helper.cpp @@ -63,6 +63,45 @@ void FileAccessHelper::OnSchedulerDied(const wptr &remote) HILOG_INFO("tag dsa %{public}s called end", __func__); } +FileAccessHelper::FileAccessHelper(const sptr &token, + const AAFwk::Want &want, const sptr &fileExtProxy) +{ + HILOG_INFO("tag dsa FileAccessHelper::FileAccessHelper start"); + token_ = token; + want_ = want; + fileExtProxy_ = fileExtProxy; + fileExtConnection_ = FileExtConnection::GetInstance(); + HILOG_INFO("tag dsa FileAccessHelper::FileAccessHelper end"); +} + +std::shared_ptr FileAccessHelper::Creator( + const sptr &token, const AAFwk::Want &want) +{ + HILOG_INFO("tag dsa FileAccessHelper::Creator with runtime context, want and uri called start."); + + HILOG_INFO("tag dsa FileAccessHelper::Creator before ConnectFileExtAbility."); + sptr fileExtProxy = nullptr; + + sptr fileExtConnection = FileExtConnection::GetInstance(); + if (!fileExtConnection->IsExtAbilityConnected()) { + fileExtConnection->ConnectFileExtAbility(want, token); + } + fileExtProxy = fileExtConnection->GetFileExtProxy(); + if (fileExtProxy == nullptr) { + HILOG_WARN("tag dsa FileAccessHelper::Creator get invalid fileExtProxy"); + } + HILOG_INFO("tag dsa FileAccessHelper::Creator after ConnectFileExtAbility."); + + FileAccessHelper *ptrDataShareHelper = new (std::nothrow) FileAccessHelper(token, want, fileExtProxy); + if (ptrDataShareHelper == nullptr) { + HILOG_ERROR("tag dsa FileAccessHelper::Creator failed, create FileAccessHelper failed"); + return nullptr; + } + + HILOG_INFO("tag dsa FileAccessHelper::Creator with runtime context, want and uri called end."); + return std::shared_ptr(ptrDataShareHelper); +} + std::shared_ptr FileAccessHelper::Creator( const std::shared_ptr &context, const AAFwk::Want &want) {