diff --git a/wifi/bundle.json b/wifi/bundle.json index cacf470affa88ce7fbf94faf43afb763f974a7f9..c655ff1bc8f2e65476b8f77d637fc5c58730f8ec 100644 --- a/wifi/bundle.json +++ b/wifi/bundle.json @@ -74,6 +74,7 @@ "wifi_feature_mdm_restricted_enable", "wifi_feature_with_extensible_authentication", "wifi_feature_with_scan_control_action_listen", + "wifi_feature_with_portal_login", "wifi_feature_with_security_detect" ], "adapted_system_type": [ diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/BUILD.gn b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/BUILD.gn index ba1cf6819b9c27177cc252ed3ec86faf0554a733..3459964d76fdba29505b8d485263227962f1cdba 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/BUILD.gn +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/BUILD.gn @@ -160,6 +160,10 @@ if (defined(ohos_lite)) { defines += [ "SUPPORT_LOCAL_RANDOM_MAC" ] } + if (wifi_feature_with_portal_login) { + defines += [ "SUPPORT_PORTAL_LOGIN" ] + } + if (wifi_feature_with_random_mac_addr) { defines += [ "SUPPORT_RANDOM_MAC_ADDR" ] } diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp index 8801fafb57ae4681f4e38d8e8494afe133a88085..1b950163aea19911b3274286dcd91fd21ee7d4b9 100755 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp @@ -2049,28 +2049,40 @@ void StaStateMachine::HandlePortalNetworkPorcess() AAFwk::Want want; want.SetParam("netId", netId); int deviceType = WifiConfigCenter::GetInstance().GetDeviceType(); +#ifndef SUPPORT_PORTAL_LOGIN + std::string bundle = WifiSettings::GetInstance().GetPackageName("BROWSER_BUNDLE"); + want.SetAction(PORTAL_ACTION); + want.SetUri(mPortalUrl); + want.AddEntity(PORTAL_ENTITY); + want.SetBundle(bundle); + WIFI_LOGI("want browser wifi netId is %{public}d, deviceType is %{public}d", netId, deviceType); + OHOS::ErrCode err = WifiNotificationUtil::GetInstance().StartAbility(want); + if (err != ERR_OK) { + WIFI_LOGI("want browser StartAbility is failed %{public}d", err); + WriteBrowserFailedForPortalHiSysEvent(err, mPortalUrl); + AAFwk::Want wantPortalLogin; + wantPortalLogin.SetParam("netId", netId); + wantPortalLogin.SetElementName("com.wifiservice.portallogin", "EntryAbility"); + wantPortalLogin.SetParam("url", mPortalUrl); + wantPortalLogin.SetParam("shouldShowBrowseItem", deviceType != ProductDeviceType::TV); + WIFI_LOGI("wantPortalLogin wifi netId is %{public}d, deviceType is %{public}d", netId, deviceType); + OHOS::ErrCode err = WifiNotificationUtil::GetInstance().StartAbility(wantPortalLogin); + if (err != ERR_OK) { + WIFI_LOGI("wantPortalLogin portal StartAbility is failed %{public}d", err); + } + } +#else want.SetElementName("com.wifiservice.portallogin", "EntryAbility"); want.SetParam("url", mPortalUrl); want.SetParam("shouldShowBrowseItem", deviceType != ProductDeviceType::TV); WIFI_LOGI("portal login wifi netId is %{public}d, deviceType is %{public}d", netId, deviceType); OHOS::ErrCode err = WifiNotificationUtil::GetInstance().StartAbility(want); if (err != ERR_OK) { - WIFI_LOGI("portal login StartAbility is failed %{public}d", err); + WIFI_LOGI("want portal login StartAbility is failed %{public}d", err); WriteBrowserFailedForPortalHiSysEvent(err, mPortalUrl); - AAFwk::Want wantBrowser; - wantBrowser.SetParam("netId", netId); - std::string bundle = WifiSettings::GetInstance().GetPackageName("BROWSER_BUNDLE"); - wantBrowser.SetAction(PORTAL_ACTION); - wantBrowser.SetUri(mPortalUrl); - wantBrowser.AddEntity(PORTAL_ENTITY); - wantBrowser.SetBundle(bundle); - WIFI_LOGI("wantbrowser wifi netId is %{public}d, deviceType is %{public}d", netId, deviceType); - OHOS::ErrCode err = WifiNotificationUtil::GetInstance().StartAbility(wantBrowser); - if (err != ERR_OK) { - WIFI_LOGI("wantbrowser portal StartAbility is failed %{public}d", err); - } } #endif +#endif } void StaStateMachine::SetPortalBrowserFlag(bool flag) diff --git a/wifi/wifi.gni b/wifi/wifi.gni index 7f5a730190d1a66f176389078250609eda294316..f405ef1a8760b06926f649e0e5e525b99943bc43 100644 --- a/wifi/wifi.gni +++ b/wifi/wifi.gni @@ -57,6 +57,7 @@ declare_args() { defined(global_parts_info.hdf_drivers_interface_wlan)) { wifi_feature_with_hdi_chip_supported = true } + wifi_feature_with_portal_login = true wifi_feature_with_vap_manager = true wifi_feature_with_wifi_oeminfo_mac = false wifi_feature_mdm_restricted_enable = true