1 /* 2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "bundle_mgr_helper.h" 17 18 #include "bundle_mgr_service_death_recipient.h" 19 #include "global_constant.h" 20 #include "hilog_tag_wrapper.h" 21 #include "hitrace_meter.h" 22 #include "iservice_registry.h" 23 #include "system_ability_definition.h" 24 25 namespace OHOS { 26 namespace AppExecFwk { BundleMgrHelper()27 BundleMgrHelper::BundleMgrHelper() {} 28 ~BundleMgrHelper()29 BundleMgrHelper::~BundleMgrHelper() 30 { 31 if (bundleMgr_ != nullptr && bundleMgr_->AsObject() != nullptr && deathRecipient_ != nullptr) { 32 bundleMgr_->AsObject()->RemoveDeathRecipient(deathRecipient_); 33 } 34 } 35 PreConnect()36 void BundleMgrHelper::PreConnect() 37 { 38 Connect(); 39 } 40 GetNameForUid(const int32_t uid,std::string & name)41 ErrCode BundleMgrHelper::GetNameForUid(const int32_t uid, std::string &name) 42 { 43 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 44 auto bundleMgr = Connect(); 45 if (bundleMgr == nullptr) { 46 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 47 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 48 } 49 50 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 51 return bundleMgr->GetNameForUid(uid, name); 52 } 53 GetNameAndIndexForUid(const int32_t uid,std::string & bundleName,int32_t & appIndex)54 ErrCode BundleMgrHelper::GetNameAndIndexForUid(const int32_t uid, std::string &bundleName, int32_t &appIndex) 55 { 56 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 57 auto bundleMgr = Connect(); 58 if (bundleMgr == nullptr) { 59 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 60 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 61 } 62 63 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 64 return bundleMgr->GetNameAndIndexForUid(uid, bundleName, appIndex); 65 } 66 GetBundleInfo(const std::string & bundleName,const BundleFlag flag,BundleInfo & bundleInfo,int32_t userId)67 bool BundleMgrHelper::GetBundleInfo(const std::string &bundleName, const BundleFlag flag, BundleInfo &bundleInfo, 68 int32_t userId) 69 { 70 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 71 auto bundleMgr = Connect(); 72 if (bundleMgr == nullptr) { 73 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 74 return false; 75 } 76 77 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 78 return bundleMgr->GetBundleInfo(bundleName, flag, bundleInfo, userId); 79 } 80 InstallSandboxApp(const std::string & bundleName,int32_t dlpType,int32_t userId,int32_t & appIndex)81 ErrCode BundleMgrHelper::InstallSandboxApp(const std::string &bundleName, int32_t dlpType, int32_t userId, 82 int32_t &appIndex) 83 { 84 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 85 if (bundleName.empty()) { 86 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The bundleName is empty."); 87 return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR; 88 } 89 auto bundleInstaller = ConnectBundleInstaller(); 90 if (bundleInstaller == nullptr) { 91 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 92 return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR; 93 } 94 95 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 96 return bundleInstaller->InstallSandboxApp(bundleName, dlpType, userId, appIndex); 97 } 98 UninstallSandboxApp(const std::string & bundleName,int32_t appIndex,int32_t userId)99 ErrCode BundleMgrHelper::UninstallSandboxApp(const std::string &bundleName, int32_t appIndex, int32_t userId) 100 { 101 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 102 if (bundleName.empty() || appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) { 103 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid."); 104 return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR; 105 } 106 auto bundleInstaller = ConnectBundleInstaller(); 107 if (bundleInstaller == nullptr) { 108 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 109 return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR; 110 } 111 112 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 113 return bundleInstaller->UninstallSandboxApp(bundleName, appIndex, userId); 114 } 115 GetUninstalledBundleInfo(const std::string bundleName,BundleInfo & bundleInfo)116 ErrCode BundleMgrHelper::GetUninstalledBundleInfo(const std::string bundleName, BundleInfo &bundleInfo) 117 { 118 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 119 auto bundleMgr = Connect(); 120 if (bundleMgr == nullptr) { 121 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 122 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 123 } 124 125 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 126 return bundleMgr->GetUninstalledBundleInfo(bundleName, bundleInfo); 127 } 128 GetSandboxBundleInfo(const std::string & bundleName,int32_t appIndex,int32_t userId,BundleInfo & info)129 ErrCode BundleMgrHelper::GetSandboxBundleInfo( 130 const std::string &bundleName, int32_t appIndex, int32_t userId, BundleInfo &info) 131 { 132 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 133 if (bundleName.empty() || appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) { 134 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid."); 135 return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR; 136 } 137 auto bundleMgr = Connect(); 138 if (bundleMgr == nullptr) { 139 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 140 return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR; 141 } 142 143 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 144 return bundleMgr->GetSandboxBundleInfo(bundleName, appIndex, userId, info); 145 } 146 GetSandboxAbilityInfo(const Want & want,int32_t appIndex,int32_t flags,int32_t userId,AbilityInfo & abilityInfo)147 ErrCode BundleMgrHelper::GetSandboxAbilityInfo(const Want &want, int32_t appIndex, int32_t flags, int32_t userId, 148 AbilityInfo &abilityInfo) 149 { 150 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 151 if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) { 152 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid"); 153 return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR; 154 } 155 auto bundleMgr = Connect(); 156 if (bundleMgr == nullptr) { 157 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 158 return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR; 159 } 160 161 AAFwk::Want newWant = want; 162 newWant.RemoveAllFd(); 163 164 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 165 return bundleMgr->GetSandboxAbilityInfo(newWant, appIndex, flags, userId, abilityInfo); 166 } 167 GetSandboxExtAbilityInfos(const Want & want,int32_t appIndex,int32_t flags,int32_t userId,std::vector<ExtensionAbilityInfo> & extensionInfos)168 ErrCode BundleMgrHelper::GetSandboxExtAbilityInfos(const Want &want, int32_t appIndex, int32_t flags, 169 int32_t userId, std::vector<ExtensionAbilityInfo> &extensionInfos) 170 { 171 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 172 if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) { 173 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid"); 174 return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR; 175 } 176 auto bundleMgr = Connect(); 177 if (bundleMgr == nullptr) { 178 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 179 return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR; 180 } 181 182 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 183 return bundleMgr->GetSandboxExtAbilityInfos(want, appIndex, flags, userId, extensionInfos); 184 } 185 GetSandboxHapModuleInfo(const AbilityInfo & abilityInfo,int32_t appIndex,int32_t userId,HapModuleInfo & hapModuleInfo)186 ErrCode BundleMgrHelper::GetSandboxHapModuleInfo(const AbilityInfo &abilityInfo, int32_t appIndex, int32_t userId, 187 HapModuleInfo &hapModuleInfo) 188 { 189 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 190 if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) { 191 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The params are invalid"); 192 return ERR_APPEXECFWK_SANDBOX_INSTALL_PARAM_ERROR; 193 } 194 auto bundleMgr = Connect(); 195 if (bundleMgr == nullptr) { 196 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 197 return ERR_APPEXECFWK_SANDBOX_INSTALL_INTERNAL_ERROR; 198 } 199 200 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 201 return bundleMgr->GetSandboxHapModuleInfo(abilityInfo, appIndex, userId, hapModuleInfo); 202 } 203 GetAppIdByBundleName(const std::string & bundleName,const int32_t userId)204 std::string BundleMgrHelper::GetAppIdByBundleName(const std::string &bundleName, const int32_t userId) 205 { 206 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "GetAppIdByBundleName called"); 207 auto bundleMgr = Connect(); 208 if (bundleMgr == nullptr) { 209 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect."); 210 return ""; 211 } 212 213 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 214 return bundleMgr->GetAppIdByBundleName(bundleName, userId); 215 } 216 Connect()217 sptr<IBundleMgr> BundleMgrHelper::Connect() 218 { 219 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 220 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 221 std::lock_guard<std::mutex> lock(mutex_); 222 if (bundleMgr_ == nullptr) { 223 sptr<ISystemAbilityManager> systemAbilityManager = 224 SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 225 if (systemAbilityManager == nullptr) { 226 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to get system ability manager"); 227 return nullptr; 228 } 229 230 sptr<IRemoteObject> remoteObject_ = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); 231 if (remoteObject_ == nullptr || (bundleMgr_ = iface_cast<IBundleMgr>(remoteObject_)) == nullptr) { 232 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to get bundle mgr service remote object"); 233 return nullptr; 234 } 235 std::weak_ptr<BundleMgrHelper> weakPtr = shared_from_this(); 236 auto deathCallback = [weakPtr](const wptr<IRemoteObject>& object) { 237 auto sharedPtr = weakPtr.lock(); 238 if (sharedPtr == nullptr) { 239 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Bundle helper instance is nullptr"); 240 return; 241 } 242 sharedPtr->OnDeath(); 243 }; 244 deathRecipient_ = new (std::nothrow) BundleMgrServiceDeathRecipient(deathCallback); 245 if (deathRecipient_ == nullptr) { 246 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to create death recipient"); 247 return nullptr; 248 } 249 if (bundleMgr_->AsObject() != nullptr) { 250 bundleMgr_->AsObject()->AddDeathRecipient(deathRecipient_); 251 } 252 } 253 254 return bundleMgr_; 255 } 256 ConnectBundleInstaller()257 sptr<IBundleInstaller> BundleMgrHelper::ConnectBundleInstaller() 258 { 259 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 260 { 261 std::lock_guard<std::mutex> lock(mutex_); 262 if (bundleInstaller_ != nullptr) { 263 return bundleInstaller_; 264 } 265 } 266 267 auto bundleMgr = Connect(); 268 if (bundleMgr == nullptr) { 269 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 270 return nullptr; 271 } 272 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 273 std::lock_guard<std::mutex> lock(mutex_); 274 bundleInstaller_ = bundleMgr->GetBundleInstaller(); 275 if ((bundleInstaller_ == nullptr) || (bundleInstaller_->AsObject() == nullptr)) { 276 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to get bundle installer proxy"); 277 return nullptr; 278 } 279 280 return bundleInstaller_; 281 } 282 OnDeath()283 void BundleMgrHelper::OnDeath() 284 { 285 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 286 std::lock_guard<std::mutex> lock(mutex_); 287 if (bundleMgr_ == nullptr || bundleMgr_->AsObject() == nullptr) { 288 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "bundleMgr_ is nullptr"); 289 return; 290 } 291 bundleMgr_->AsObject()->RemoveDeathRecipient(deathRecipient_); 292 bundleMgr_ = nullptr; 293 bundleInstaller_ = nullptr; 294 } 295 GetBundleInfo(const std::string & bundleName,int32_t flags,BundleInfo & bundleInfo,int32_t userId)296 bool BundleMgrHelper::GetBundleInfo(const std::string &bundleName, int32_t flags, 297 BundleInfo &bundleInfo, int32_t userId) 298 { 299 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 300 auto bundleMgr = Connect(); 301 if (bundleMgr == nullptr) { 302 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 303 return false; 304 } 305 306 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 307 return bundleMgr->GetBundleInfo(bundleName, flags, bundleInfo, userId); 308 } 309 GetHapModuleInfo(const AbilityInfo & abilityInfo,HapModuleInfo & hapModuleInfo)310 bool BundleMgrHelper::GetHapModuleInfo(const AbilityInfo &abilityInfo, HapModuleInfo &hapModuleInfo) 311 { 312 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 313 auto bundleMgr = Connect(); 314 if (bundleMgr == nullptr) { 315 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 316 return false; 317 } 318 319 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 320 return bundleMgr->GetHapModuleInfo(abilityInfo, hapModuleInfo); 321 } 322 GetAbilityLabel(const std::string & bundleName,const std::string & abilityName)323 std::string BundleMgrHelper::GetAbilityLabel(const std::string &bundleName, const std::string &abilityName) 324 { 325 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 326 auto bundleMgr = Connect(); 327 if (bundleMgr == nullptr) { 328 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 329 return ""; 330 } 331 332 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 333 return bundleMgr->GetAbilityLabel(bundleName, abilityName); 334 } 335 GetAppType(const std::string & bundleName)336 std::string BundleMgrHelper::GetAppType(const std::string &bundleName) 337 { 338 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 339 auto bundleMgr = Connect(); 340 if (bundleMgr == nullptr) { 341 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 342 return ""; 343 } 344 345 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 346 return bundleMgr->GetAppType(bundleName); 347 } 348 GetBaseSharedBundleInfos(const std::string & bundleName,std::vector<BaseSharedBundleInfo> & baseSharedBundleInfos,GetDependentBundleInfoFlag flag)349 ErrCode BundleMgrHelper::GetBaseSharedBundleInfos( 350 const std::string &bundleName, std::vector<BaseSharedBundleInfo> &baseSharedBundleInfos, 351 GetDependentBundleInfoFlag flag) 352 { 353 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 354 auto bundleMgr = Connect(); 355 if (bundleMgr == nullptr) { 356 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 357 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 358 } 359 360 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 361 return bundleMgr->GetBaseSharedBundleInfos(bundleName, baseSharedBundleInfos, flag); 362 } 363 GetBundleInfoForSelf(int32_t flags,BundleInfo & bundleInfo)364 ErrCode BundleMgrHelper::GetBundleInfoForSelf(int32_t flags, BundleInfo &bundleInfo) 365 { 366 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 367 auto bundleMgr = Connect(); 368 if (bundleMgr == nullptr) { 369 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 370 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 371 } 372 373 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 374 return bundleMgr->GetBundleInfoForSelf(flags, bundleInfo); 375 } 376 GetDependentBundleInfo(const std::string & sharedBundleName,BundleInfo & sharedBundleInfo,GetDependentBundleInfoFlag flag)377 ErrCode BundleMgrHelper::GetDependentBundleInfo(const std::string &sharedBundleName, BundleInfo &sharedBundleInfo, 378 GetDependentBundleInfoFlag flag) 379 { 380 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 381 auto bundleMgr = Connect(); 382 if (bundleMgr == nullptr) { 383 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 384 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 385 } 386 387 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 388 return bundleMgr->GetDependentBundleInfo(sharedBundleName, sharedBundleInfo, flag); 389 } 390 GetGroupDir(const std::string & dataGroupId,std::string & dir)391 bool BundleMgrHelper::GetGroupDir(const std::string &dataGroupId, std::string &dir) 392 { 393 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 394 auto bundleMgr = Connect(); 395 if (bundleMgr == nullptr) { 396 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 397 return false; 398 } 399 400 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 401 return bundleMgr->GetGroupDir(dataGroupId, dir); 402 } 403 GetOverlayManagerProxy()404 sptr<IOverlayManager> BundleMgrHelper::GetOverlayManagerProxy() 405 { 406 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 407 auto bundleMgr = Connect(); 408 if (bundleMgr == nullptr) { 409 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 410 return nullptr; 411 } 412 413 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 414 return bundleMgr->GetOverlayManagerProxy(); 415 } 416 QueryAbilityInfo(const Want & want,AbilityInfo & abilityInfo)417 bool BundleMgrHelper::QueryAbilityInfo(const Want &want, AbilityInfo &abilityInfo) 418 { 419 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 420 auto bundleMgr = Connect(); 421 if (bundleMgr == nullptr) { 422 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 423 return false; 424 } 425 426 AAFwk::Want newWant = want; 427 newWant.RemoveAllFd(); 428 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 429 return bundleMgr->QueryAbilityInfo(newWant, abilityInfo); 430 } 431 QueryAbilityInfo(const Want & want,int32_t flags,int32_t userId,AbilityInfo & abilityInfo)432 bool BundleMgrHelper::QueryAbilityInfo(const Want &want, int32_t flags, int32_t userId, AbilityInfo &abilityInfo) 433 { 434 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 435 auto bundleMgr = Connect(); 436 if (bundleMgr == nullptr) { 437 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 438 return false; 439 } 440 441 AAFwk::Want newWant = want; 442 newWant.RemoveAllFd(); 443 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 444 return bundleMgr->QueryAbilityInfo(newWant, flags, userId, abilityInfo); 445 } 446 GetBundleInfos(int32_t flags,std::vector<BundleInfo> & bundleInfos,int32_t userId)447 bool BundleMgrHelper::GetBundleInfos(int32_t flags, std::vector<BundleInfo> &bundleInfos, int32_t userId) 448 { 449 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 450 auto bundleMgr = Connect(); 451 if (bundleMgr == nullptr) { 452 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 453 return false; 454 } 455 456 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 457 return bundleMgr->GetBundleInfos(flags, bundleInfos, userId); 458 } 459 GetBundleInfos(const BundleFlag flag,std::vector<BundleInfo> & bundleInfos,int32_t userId)460 bool BundleMgrHelper::GetBundleInfos(const BundleFlag flag, std::vector<BundleInfo> &bundleInfos, int32_t userId) 461 { 462 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 463 auto bundleMgr = Connect(); 464 if (bundleMgr == nullptr) { 465 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 466 return false; 467 } 468 469 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 470 return bundleMgr->GetBundleInfos(flag, bundleInfos, userId); 471 } 472 GetQuickFixManagerProxy()473 sptr<IQuickFixManager> BundleMgrHelper::GetQuickFixManagerProxy() 474 { 475 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 476 auto bundleMgr = Connect(); 477 if (bundleMgr == nullptr) { 478 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 479 return nullptr; 480 } 481 482 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 483 return bundleMgr->GetQuickFixManagerProxy(); 484 } 485 ProcessPreload(const Want & want)486 bool BundleMgrHelper::ProcessPreload(const Want &want) 487 { 488 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 489 auto bundleMgr = Connect(); 490 if (bundleMgr == nullptr) { 491 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 492 return false; 493 } 494 495 AAFwk::Want newWant = want; 496 newWant.RemoveAllFd(); 497 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 498 return bundleMgr->ProcessPreload(newWant); 499 } 500 GetAppControlProxy()501 sptr<IAppControlMgr> BundleMgrHelper::GetAppControlProxy() 502 { 503 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 504 auto bundleMgr = Connect(); 505 if (bundleMgr == nullptr) { 506 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 507 return nullptr; 508 } 509 510 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 511 return bundleMgr->GetAppControlProxy(); 512 } 513 QueryExtensionAbilityInfos(const Want & want,const int32_t & flag,const int32_t & userId,std::vector<ExtensionAbilityInfo> & extensionInfos)514 bool BundleMgrHelper::QueryExtensionAbilityInfos(const Want &want, const int32_t &flag, const int32_t &userId, 515 std::vector<ExtensionAbilityInfo> &extensionInfos) 516 { 517 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 518 auto bundleMgr = Connect(); 519 if (bundleMgr == nullptr) { 520 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 521 return false; 522 } 523 524 AAFwk::Want newWant = want; 525 newWant.RemoveAllFd(); 526 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 527 return bundleMgr->QueryExtensionAbilityInfos(newWant, flag, userId, extensionInfos); 528 } 529 GetBundleInfoV9(const std::string & bundleName,int32_t flags,BundleInfo & bundleInfo,int32_t userId)530 ErrCode BundleMgrHelper::GetBundleInfoV9( 531 const std::string &bundleName, int32_t flags, BundleInfo &bundleInfo, int32_t userId) 532 { 533 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 534 auto bundleMgr = Connect(); 535 if (bundleMgr == nullptr) { 536 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 537 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 538 } 539 540 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 541 return bundleMgr->GetBundleInfoV9(bundleName, flags, bundleInfo, userId); 542 } 543 GetApplicationInfo(const std::string & appName,const ApplicationFlag flag,const int32_t userId,ApplicationInfo & appInfo)544 bool BundleMgrHelper::GetApplicationInfo( 545 const std::string &appName, const ApplicationFlag flag, const int32_t userId, ApplicationInfo &appInfo) 546 { 547 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 548 auto bundleMgr = Connect(); 549 if (bundleMgr == nullptr) { 550 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 551 return false; 552 } 553 554 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 555 return bundleMgr->GetApplicationInfo(appName, flag, userId, appInfo); 556 } 557 GetApplicationInfo(const std::string & appName,int32_t flags,int32_t userId,ApplicationInfo & appInfo)558 bool BundleMgrHelper::GetApplicationInfo( 559 const std::string &appName, int32_t flags, int32_t userId, ApplicationInfo &appInfo) 560 { 561 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 562 auto bundleMgr = Connect(); 563 if (bundleMgr == nullptr) { 564 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 565 return false; 566 } 567 568 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 569 return bundleMgr->GetApplicationInfo(appName, flags, userId, appInfo); 570 } 571 GetApplicationInfoWithAppIndex(const std::string & appName,int32_t appIndex,int32_t userId,ApplicationInfo & appInfo)572 bool BundleMgrHelper::GetApplicationInfoWithAppIndex( 573 const std::string &appName, int32_t appIndex, int32_t userId, ApplicationInfo &appInfo) 574 { 575 TAG_LOGI(AAFwkTag::BUNDLEMGRHELPER, "appName: %{public}s, appIndex: %{public}d", appName.c_str(), appIndex); 576 if (appIndex < 0) { 577 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Invalid appIndex"); 578 return false; 579 } 580 auto bundleMgr = Connect(); 581 if (bundleMgr == nullptr) { 582 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 583 return false; 584 } 585 586 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 587 BundleInfo bundleInfo; 588 if (appIndex == 0) { 589 if (bundleMgr->GetApplicationInfo(appName, AppExecFwk::BundleFlag::GET_BUNDLE_DEFAULT, userId, appInfo)) { 590 return true; 591 } 592 } else if (appIndex <= AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) { 593 if (bundleMgr->GetCloneBundleInfo(appName, 594 static_cast<int32_t>(GetBundleInfoFlag::GET_BUNDLE_INFO_WITH_APPLICATION), 595 appIndex, bundleInfo, userId) == ERR_OK) { 596 appInfo = bundleInfo.applicationInfo; 597 return true; 598 } 599 } else { 600 if (bundleMgr->GetSandboxBundleInfo(appName, appIndex, userId, bundleInfo) == ERR_OK) { 601 appInfo = bundleInfo.applicationInfo; 602 return true; 603 } 604 } 605 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "GetApplicationInfo failed"); 606 return false; 607 } 608 UnregisterBundleEventCallback(const sptr<IBundleEventCallback> & bundleEventCallback)609 bool BundleMgrHelper::UnregisterBundleEventCallback(const sptr<IBundleEventCallback> &bundleEventCallback) 610 { 611 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 612 if (bundleEventCallback == nullptr) { 613 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The bundleEventCallback is nullptr"); 614 return false; 615 } 616 617 auto bundleMgr = Connect(); 618 if (bundleMgr == nullptr) { 619 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 620 return false; 621 } 622 623 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 624 return bundleMgr->UnregisterBundleEventCallback(bundleEventCallback); 625 } 626 QueryExtensionAbilityInfoByUri(const std::string & uri,int32_t userId,ExtensionAbilityInfo & extensionAbilityInfo)627 bool BundleMgrHelper::QueryExtensionAbilityInfoByUri( 628 const std::string &uri, int32_t userId, ExtensionAbilityInfo &extensionAbilityInfo) 629 { 630 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 631 auto bundleMgr = Connect(); 632 if (bundleMgr == nullptr) { 633 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 634 return false; 635 } 636 637 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 638 return bundleMgr->QueryExtensionAbilityInfoByUri(uri, userId, extensionAbilityInfo); 639 } 640 ImplicitQueryInfoByPriority(const Want & want,int32_t flags,int32_t userId,AbilityInfo & abilityInfo,ExtensionAbilityInfo & extensionInfo)641 bool BundleMgrHelper::ImplicitQueryInfoByPriority( 642 const Want &want, int32_t flags, int32_t userId, AbilityInfo &abilityInfo, ExtensionAbilityInfo &extensionInfo) 643 { 644 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 645 auto bundleMgr = Connect(); 646 if (bundleMgr == nullptr) { 647 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 648 return false; 649 } 650 AAFwk::Want newWant = want; 651 newWant.RemoveAllFd(); 652 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 653 return bundleMgr->ImplicitQueryInfoByPriority(newWant, flags, userId, abilityInfo, extensionInfo); 654 } 655 QueryAbilityInfoByUri(const std::string & abilityUri,int32_t userId,AbilityInfo & abilityInfo)656 bool BundleMgrHelper::QueryAbilityInfoByUri(const std::string &abilityUri, int32_t userId, AbilityInfo &abilityInfo) 657 { 658 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 659 auto bundleMgr = Connect(); 660 if (bundleMgr == nullptr) { 661 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 662 return false; 663 } 664 665 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 666 return bundleMgr->QueryAbilityInfoByUri(abilityUri, userId, abilityInfo); 667 } 668 QueryAbilityInfo(const Want & want,int32_t flags,int32_t userId,AbilityInfo & abilityInfo,const sptr<IRemoteObject> & callBack)669 bool BundleMgrHelper::QueryAbilityInfo( 670 const Want &want, int32_t flags, int32_t userId, AbilityInfo &abilityInfo, const sptr<IRemoteObject> &callBack) 671 { 672 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 673 auto bundleMgr = Connect(); 674 if (bundleMgr == nullptr) { 675 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 676 return false; 677 } 678 679 AAFwk::Want newWant = want; 680 newWant.RemoveAllFd(); 681 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 682 return bundleMgr->QueryAbilityInfo(newWant, flags, userId, abilityInfo, callBack); 683 } 684 UpgradeAtomicService(const Want & want,int32_t userId)685 void BundleMgrHelper::UpgradeAtomicService(const Want &want, int32_t userId) 686 { 687 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 688 auto bundleMgr = Connect(); 689 if (bundleMgr == nullptr) { 690 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 691 return; 692 } 693 694 AAFwk::Want newWant = want; 695 newWant.RemoveAllFd(); 696 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 697 bundleMgr->UpgradeAtomicService(newWant, userId); 698 } 699 ImplicitQueryInfos(const Want & want,int32_t flags,int32_t userId,bool withDefault,std::vector<AbilityInfo> & abilityInfos,std::vector<ExtensionAbilityInfo> & extensionInfos)700 bool BundleMgrHelper::ImplicitQueryInfos(const Want &want, int32_t flags, int32_t userId, bool withDefault, 701 std::vector<AbilityInfo> &abilityInfos, std::vector<ExtensionAbilityInfo> &extensionInfos) 702 { 703 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 704 auto bundleMgr = Connect(); 705 if (bundleMgr == nullptr) { 706 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 707 return false; 708 } 709 710 AAFwk::Want newWant = want; 711 newWant.RemoveAllFd(); 712 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 713 bool findDefaultApp = false; 714 bool ret = bundleMgr->ImplicitQueryInfos(newWant, flags, userId, withDefault, abilityInfos, 715 extensionInfos, findDefaultApp); 716 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "findDefaultApp is %{public}d.", findDefaultApp); 717 return ret; 718 } 719 CleanBundleDataFiles(const std::string & bundleName,int32_t userId,int32_t appCloneIndex)720 bool BundleMgrHelper::CleanBundleDataFiles(const std::string &bundleName, int32_t userId, int32_t appCloneIndex) 721 { 722 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 723 auto bundleMgr = Connect(); 724 if (bundleMgr == nullptr) { 725 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 726 return false; 727 } 728 729 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 730 return bundleMgr->CleanBundleDataFiles(bundleName, userId, appCloneIndex); 731 } 732 QueryDataGroupInfos(const std::string & bundleName,int32_t userId,std::vector<DataGroupInfo> & infos)733 bool BundleMgrHelper::QueryDataGroupInfos( 734 const std::string &bundleName, int32_t userId, std::vector<DataGroupInfo> &infos) 735 { 736 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 737 auto bundleMgr = Connect(); 738 if (bundleMgr == nullptr) { 739 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 740 return false; 741 } 742 743 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 744 return bundleMgr->QueryDataGroupInfos(bundleName, userId, infos); 745 } 746 RegisterBundleEventCallback(const sptr<IBundleEventCallback> & bundleEventCallback)747 bool BundleMgrHelper::RegisterBundleEventCallback(const sptr<IBundleEventCallback> &bundleEventCallback) 748 { 749 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 750 if (bundleEventCallback == nullptr) { 751 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "The bundleEventCallback is nullptr"); 752 return false; 753 } 754 755 auto bundleMgr = Connect(); 756 if (bundleMgr == nullptr) { 757 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 758 return false; 759 } 760 761 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 762 return bundleMgr->RegisterBundleEventCallback(bundleEventCallback); 763 } 764 GetHapModuleInfo(const AbilityInfo & abilityInfo,int32_t userId,HapModuleInfo & hapModuleInfo)765 bool BundleMgrHelper::GetHapModuleInfo(const AbilityInfo &abilityInfo, int32_t userId, HapModuleInfo &hapModuleInfo) 766 { 767 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 768 auto bundleMgr = Connect(); 769 if (bundleMgr == nullptr) { 770 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 771 return false; 772 } 773 774 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 775 return bundleMgr->GetHapModuleInfo(abilityInfo, userId, hapModuleInfo); 776 } 777 QueryAppGalleryBundleName(std::string & bundleName)778 bool BundleMgrHelper::QueryAppGalleryBundleName(std::string &bundleName) 779 { 780 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 781 auto bundleMgr = Connect(); 782 if (bundleMgr == nullptr) { 783 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 784 return false; 785 } 786 787 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 788 return bundleMgr->QueryAppGalleryBundleName(bundleName); 789 } 790 GetUidByBundleName(const std::string & bundleName,int32_t userId,int32_t appCloneIndex)791 ErrCode BundleMgrHelper::GetUidByBundleName(const std::string &bundleName, int32_t userId, int32_t appCloneIndex) 792 { 793 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 794 auto bundleMgr = Connect(); 795 if (bundleMgr == nullptr) { 796 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 797 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 798 } 799 800 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 801 return bundleMgr->GetUidByBundleName(bundleName, userId, appCloneIndex); 802 } 803 QueryExtensionAbilityInfosOnlyWithTypeName(const std::string & extensionTypeName,const uint32_t flag,const int32_t userId,std::vector<ExtensionAbilityInfo> & extensionInfos)804 ErrCode BundleMgrHelper::QueryExtensionAbilityInfosOnlyWithTypeName(const std::string &extensionTypeName, 805 const uint32_t flag, const int32_t userId, std::vector<ExtensionAbilityInfo> &extensionInfos) 806 { 807 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 808 auto bundleMgr = Connect(); 809 if (bundleMgr == nullptr) { 810 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 811 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 812 } 813 814 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 815 return bundleMgr->QueryExtensionAbilityInfosOnlyWithTypeName(extensionTypeName, flag, userId, extensionInfos); 816 } 817 GetDefaultAppProxy()818 sptr<IDefaultApp> BundleMgrHelper::GetDefaultAppProxy() 819 { 820 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 821 auto bundleMgr = Connect(); 822 if (bundleMgr == nullptr) { 823 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 824 return nullptr; 825 } 826 827 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 828 return bundleMgr->GetDefaultAppProxy(); 829 } 830 GetJsonProfile(ProfileType profileType,const std::string & bundleName,const std::string & moduleName,std::string & profile,int32_t userId)831 ErrCode BundleMgrHelper::GetJsonProfile(ProfileType profileType, const std::string &bundleName, 832 const std::string &moduleName, std::string &profile, int32_t userId) 833 { 834 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 835 auto bundleMgr = Connect(); 836 if (bundleMgr == nullptr) { 837 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 838 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 839 } 840 841 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 842 return bundleMgr->GetJsonProfile(profileType, bundleName, moduleName, profile, userId); 843 } 844 GetLaunchWantForBundle(const std::string & bundleName,Want & want,int32_t userId)845 ErrCode BundleMgrHelper::GetLaunchWantForBundle(const std::string &bundleName, Want &want, int32_t userId) 846 { 847 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 848 auto bundleMgr = Connect(); 849 if (bundleMgr == nullptr) { 850 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 851 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 852 } 853 854 want.RemoveAllFd(); 855 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 856 return bundleMgr->GetLaunchWantForBundle(bundleName, want, userId); 857 } 858 QueryCloneAbilityInfo(const ElementName & element,int32_t flags,int32_t appCloneIndex,AbilityInfo & abilityInfo,int32_t userId)859 ErrCode BundleMgrHelper::QueryCloneAbilityInfo(const ElementName &element, int32_t flags, int32_t appCloneIndex, 860 AbilityInfo &abilityInfo, int32_t userId) 861 { 862 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 863 auto bundleMgr = Connect(); 864 if (bundleMgr == nullptr) { 865 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 866 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 867 } 868 869 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 870 return bundleMgr->QueryCloneAbilityInfo(element, flags, appCloneIndex, abilityInfo, userId); 871 } 872 GetCloneBundleInfo(const std::string & bundleName,int32_t flags,int32_t appCloneIndex,BundleInfo & bundleInfo,int32_t userId)873 ErrCode BundleMgrHelper::GetCloneBundleInfo(const std::string &bundleName, int32_t flags, int32_t appCloneIndex, 874 BundleInfo &bundleInfo, int32_t userId) 875 { 876 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 877 auto bundleMgr = Connect(); 878 if (bundleMgr == nullptr) { 879 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 880 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 881 } 882 883 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 884 return bundleMgr->GetCloneBundleInfo(bundleName, flags, appCloneIndex, bundleInfo, userId); 885 } 886 QueryCloneExtensionAbilityInfoWithAppIndex(const ElementName & element,int32_t flags,int32_t appCloneIndex,ExtensionAbilityInfo & extensionInfo,int32_t userId)887 ErrCode BundleMgrHelper::QueryCloneExtensionAbilityInfoWithAppIndex(const ElementName &element, int32_t flags, 888 int32_t appCloneIndex, ExtensionAbilityInfo &extensionInfo, int32_t userId) 889 { 890 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "called"); 891 auto bundleMgr = Connect(); 892 if (bundleMgr == nullptr) { 893 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 894 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 895 } 896 897 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 898 return bundleMgr->QueryCloneExtensionAbilityInfoWithAppIndex(element, flags, appCloneIndex, extensionInfo, userId); 899 } 900 GetCloneAppIndexes(const std::string & bundleName,std::vector<int32_t> & appIndexes,int32_t userId)901 ErrCode BundleMgrHelper::GetCloneAppIndexes(const std::string &bundleName, std::vector<int32_t> &appIndexes, 902 int32_t userId) 903 { 904 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "Called"); 905 auto bundleMgr = Connect(); 906 if (bundleMgr == nullptr) { 907 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 908 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 909 } 910 911 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 912 return bundleMgr->GetCloneAppIndexes(bundleName, appIndexes, userId); 913 } 914 GetSignatureInfoByBundleName(const std::string & bundleName,SignatureInfo & signatureInfo)915 ErrCode BundleMgrHelper::GetSignatureInfoByBundleName(const std::string &bundleName, SignatureInfo &signatureInfo) 916 { 917 TAG_LOGD(AAFwkTag::BUNDLEMGRHELPER, "Called"); 918 auto bundleMgr = Connect(); 919 if (bundleMgr == nullptr) { 920 TAG_LOGE(AAFwkTag::BUNDLEMGRHELPER, "Failed to connect"); 921 return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; 922 } 923 924 HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); 925 return bundleMgr->GetSignatureInfoByBundleName(bundleName, signatureInfo); 926 } 927 } // namespace AppExecFwk 928 } // namespace OHOS