diff --git a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp index 430b99e1cf5fc275110c0e73d2053de71948d769..cacb6f215c673fef2c90fb66be0b9cb012f2ec0d 100644 --- a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp +++ b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.cpp @@ -49,6 +49,15 @@ bool UnwrapOpenLinkOptions(napi_env env, napi_value param, AAFwk::OpenLinkOption want.SetParam(APP_LINKING_ONLY, false); } + bool withoutDialog = false; + if (UnwrapBooleanByPropertyName(env, param, WITHOUT_DIALOG.c_str(), withoutDialog)) { + openLinkOptions.SetAppLinkingOnly(withoutDialog); + want.SetParam(WITHOUT_DIALOG, withoutDialog); + } + if (!want.HasParameter(WITHOUT_DIALOG)) { + want.SetParam(WITHOUT_DIALOG, false); + } + return true; } } // namespace AppExecFwk diff --git a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h index 78c381a6c3de44335f8766b2e0ce03ebb7b5c232..27843975fa5e177fbc1c35013a90dab5eeb4c540 100644 --- a/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h +++ b/frameworks/js/napi/inner/napi_common/open_link/napi_common_open_link_options.h @@ -22,6 +22,7 @@ namespace OHOS { namespace AppExecFwk { const std::string APP_LINKING_ONLY = "appLinkingOnly"; + const std::string WITHOUT_DIALOG = "withoutDialog"; bool UnwrapOpenLinkOptions(napi_env env, napi_value param, AAFwk::OpenLinkOptions &openLinkOptions, AAFwk::Want &want); diff --git a/services/abilitymgr/src/implicit_start_processor.cpp b/services/abilitymgr/src/implicit_start_processor.cpp index 64e0cd7c02e3568749ac6897fe13f5d87e72588b..d56b77488a4e18499ffc89cb035dc203b8fad227 100644 --- a/services/abilitymgr/src/implicit_start_processor.cpp +++ b/services/abilitymgr/src/implicit_start_processor.cpp @@ -49,6 +49,7 @@ const std::string ANCO_PENDING_REQUEST = "ancoPendingRequest"; const int NFC_CALLER_UID = 1027; const int NFC_QUERY_LENGTH = 2; const std::string OPEN_LINK_APP_LINKING_ONLY = "appLinkingOnly"; +const std::string OPEN_LINK_WITHOUT_DIALOG = "withoutDialog"; const std::string HTTP_SCHEME_NAME = "http"; const std::string HTTPS_SCHEME_NAME = "https"; const std::string FILE_SCHEME_NAME = "file"; @@ -172,7 +173,8 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_ } if (dialogAppInfos.size() == 0 && - (request.want.GetFlags() & Want::FLAG_START_WITHOUT_TIPS) == Want::FLAG_START_WITHOUT_TIPS) { + ((request.want.GetFlags() & Want::FLAG_START_WITHOUT_TIPS) == Want::FLAG_START_WITHOUT_TIPS || + request.want.GetBoolParam(OPEN_LINK_WITHOUT_DIALOG, false))) { TAG_LOGI(AAFwkTag::ABILITYMGR, "hint dialog generate fail"); return ERR_IMPLICIT_START_ABILITY_FAIL; }