diff --git a/interfaces/kits/js/installer/installer.cpp b/interfaces/kits/js/installer/installer.cpp index a8e40ac2adda39acab17d5f2932d355736cccde8..ecb62a75ec39084373fdd05978f0b1ad51f83ae9 100644 --- a/interfaces/kits/js/installer/installer.cpp +++ b/interfaces/kits/js/installer/installer.cpp @@ -39,6 +39,8 @@ const std::string RESOURCE_NAME_OF_GET_BUNDLE_INSTALLER = "GetBundleInstaller"; const std::string RESOURCE_NAME_OF_INSTALL = "Install"; const std::string RESOURCE_NAME_OF_UNINSTALL = "Uninstall"; const std::string RESOURCE_NAME_OF_RECOVER = "Recover"; +const std::string RESOURCE_NAME_OF_GET_SPECIFIED_DISTRIBUTION_TYPE = "GetSpecifiedDistributionTypeSync"; +const std::string RESOURCE_NAME_OF_GET_ADDITIONAL_INFO = "GetAdditionalInfoSync"; const std::string EMPTY_STRING = ""; // install message constexpr const char* INSTALL_PERMISSION = "ohos.permission.INSTALL_BUNDLE"; @@ -1030,5 +1032,92 @@ napi_value BundleInstallerConstructor(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, nullptr, nullptr, &jsthis, nullptr)); return jsthis; } + +napi_value GetSpecifiedDistributionTypeSync(napi_env env, napi_callback_info info) +{ + APP_LOGD("GetSpecifiedDistributionTypeSync napi called"); + NapiArg args(env, info); + if (!args.Init(ARGS_SIZE_ONE, ARGS_SIZE_ONE)) { + APP_LOGE("param count invalid."); + BusinessError::ThrowTooFewParametersError(env, ERROR_PARAM_CHECK_ERROR); + return nullptr; + } + + std::string bundleName; + if (!CommonFunc::ParseString(env, args[ARGS_POS_ZERO], bundleName)) { + APP_LOGE("bundleName invalid!"); + BusinessError::ThrowParameterTypeError(env, ERROR_PARAM_CHECK_ERROR, BUNDLE_NAME, TYPE_STRING); + return nullptr; + } + + auto iBundleMgr = CommonFunc::GetBundleMgr(); + if (iBundleMgr == nullptr) { + APP_LOGE("iBundleMgr is null"); + napi_value businessError = BusinessError::CreateCommonError( + env, ERROR_BUNDLE_SERVICE_EXCEPTION, RESOURCE_NAME_OF_GET_SPECIFIED_DISTRIBUTION_TYPE, + Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + + std::string specifiedDistributionType; + ErrCode ret = CommonFunc::ConvertErrCode( + iBundleMgr->GetSpecifiedDistributionType(bundleName, specifiedDistributionType)); + if (ret != SUCCESS) { + napi_value businessError = BusinessError::CreateCommonError( + env, ret, RESOURCE_NAME_OF_GET_SPECIFIED_DISTRIBUTION_TYPE, + Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + + napi_value nSpecifiedDistributionType; + napi_create_string_utf8(env, specifiedDistributionType.c_str(), NAPI_AUTO_LENGTH, &nSpecifiedDistributionType); + APP_LOGD("call GetSpecifiedDistributionTypeSync done."); + return nSpecifiedDistributionType; +} + +napi_value GetAdditionalInfoSync(napi_env env, napi_callback_info info) +{ + APP_LOGD("GetAdditionalInfoSync napi called"); + NapiArg args(env, info); + if (!args.Init(ARGS_SIZE_ONE, ARGS_SIZE_ONE)) { + APP_LOGE("param count invalid."); + BusinessError::ThrowTooFewParametersError(env, ERROR_PARAM_CHECK_ERROR); + return nullptr; + } + + std::string bundleName; + if (!CommonFunc::ParseString(env, args[ARGS_POS_ZERO], bundleName)) { + APP_LOGE("bundleName invalid!"); + BusinessError::ThrowParameterTypeError(env, ERROR_PARAM_CHECK_ERROR, BUNDLE_NAME, TYPE_STRING); + return nullptr; + } + + auto iBundleMgr = CommonFunc::GetBundleMgr(); + if (iBundleMgr == nullptr) { + APP_LOGE("iBundleMgr is null"); + napi_value businessError = BusinessError::CreateCommonError( + env, ERROR_BUNDLE_SERVICE_EXCEPTION, RESOURCE_NAME_OF_GET_SPECIFIED_DISTRIBUTION_TYPE, + Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + + std::string additionalInfo; + ErrCode ret = CommonFunc::ConvertErrCode( + iBundleMgr->GetAdditionalInfo(bundleName, additionalInfo)); + if (ret != SUCCESS) { + napi_value businessError = BusinessError::CreateCommonError( + env, ret, RESOURCE_NAME_OF_GET_ADDITIONAL_INFO, Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + + napi_value nAdditionalInfo; + napi_create_string_utf8(env, additionalInfo.c_str(), NAPI_AUTO_LENGTH, &nAdditionalInfo); + APP_LOGD("call GetAdditionalInfoSync done."); + return nAdditionalInfo; +} } // AppExecFwk } // OHOS \ No newline at end of file diff --git a/interfaces/kits/js/installer/installer.h b/interfaces/kits/js/installer/installer.h index fb78c8356f76f11d75ae7590ca59cee2954740c8..439bbbd7f694246345c42b9d453e06b5e706d92a 100755 --- a/interfaces/kits/js/installer/installer.h +++ b/interfaces/kits/js/installer/installer.h @@ -71,6 +71,8 @@ napi_value Install(napi_env env, napi_callback_info info); napi_value Recover(napi_env env, napi_callback_info info); napi_value Uninstall(napi_env env, napi_callback_info info); napi_value BundleInstallerConstructor(napi_env env, napi_callback_info info); +napi_value GetSpecifiedDistributionTypeSync(napi_env env, napi_callback_info info); +napi_value GetAdditionalInfoSync(napi_env env, napi_callback_info info); } // AppExecFwk } // OHOS #endif // FOUNDATION_BUNDLEMGR_SERVICES_KITS_INCLUDE_INSTALLER_H \ No newline at end of file diff --git a/interfaces/kits/js/installer/native_module.cpp b/interfaces/kits/js/installer/native_module.cpp index aa6e1b6ded875fad5875cf51a2a3c56a2e0a7a02..0dddd3ec822812ea9e6507a6755e5f674d9cca33 100755 --- a/interfaces/kits/js/installer/native_module.cpp +++ b/interfaces/kits/js/installer/native_module.cpp @@ -30,6 +30,8 @@ static napi_value BundleInstallerExport(napi_env env, napi_value exports) napi_property_descriptor desc[] = { DECLARE_NAPI_FUNCTION("getBundleInstaller", GetBundleInstaller), + DECLARE_NAPI_FUNCTION("getSpecifiedDistributionTypeSync", GetSpecifiedDistributionTypeSync), + DECLARE_NAPI_FUNCTION("getAdditionalInfoSync", GetAdditionalInfoSync), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));