diff --git a/services/networksharemanager/src/networkshare_service.cpp b/services/networksharemanager/src/networkshare_service.cpp index 93b0c3b2aaf23b9cc57e2941b166798ff88e6f9c..f7299dac42c2131e3e4c2ed707556e58559a98f4 100644 --- a/services/networksharemanager/src/networkshare_service.cpp +++ b/services/networksharemanager/src/networkshare_service.cpp @@ -27,6 +27,9 @@ #include "netsys_controller.h" #include "edm_parameter_utils.h" #include "ffrt.h" +#ifdef USB_MODOULE +#include "usb_srv_support.h" +#endif namespace OHOS { namespace NetManagerStandard { @@ -428,6 +431,9 @@ void NetworkShareService::SubscribeCommonEvent() EventFwk::MatchingSkills matchingSkills; matchingSkills.AddEvent(OHOS::EventFwk::CommonEventSupport::COMMON_EVENT_POWER_CONNECTED); matchingSkills.AddEvent(OHOS::EventFwk::CommonEventSupport::COMMON_EVENT_POWER_DISCONNECTED); +#ifdef USB_MODOULE + matchingSkills.AddEvent(OHOS::EventFwk::CommonEventSupport::COMMON_EVENT_USB_STATE); +#endif EventFwk::CommonEventSubscribeInfo subscribeInfo(matchingSkills); // 1 means CORE_EVENT_PRIORITY @@ -451,6 +457,15 @@ void NetworkShareService::CommonEventSubscriber::OnReceiveEvent(const EventFwk:: NetworkShareTracker::GetInstance().OnPowerConnected(); } else if (action == OHOS::EventFwk::CommonEventSupport::COMMON_EVENT_POWER_DISCONNECTED) { NetworkShareTracker::GetInstance().OnPowerDisConnected(); +#ifdef USB_MODOULE + } else if (action == OHOS::EventFwk::CommonEventSupport::COMMON_EVENT_USB_STATE) { + auto want = eventData.GetWant(); + auto connected = want.GetBoolParam(std::string {USB::UsbSrvSupport::CONNECTED}, false); + NETMGR_EXT_LOG_I("UsbSrvSupport::CONNECTED: %{public}d.", connected); + if (!connected) { + NetworkShareTracker::GetInstance().StopNetworkSharing(SharingIfaceType::SHARING_USB); + } +#endif } } diff --git a/services/networksharemanager/src/networkshare_tracker.cpp b/services/networksharemanager/src/networkshare_tracker.cpp index 2951141cfb49c891d1c4803e07d114afc83fb495..4c953f3a7758db99c255d174c53ef3e57bc7f7af 100644 --- a/services/networksharemanager/src/networkshare_tracker.cpp +++ b/services/networksharemanager/src/networkshare_tracker.cpp @@ -786,7 +786,7 @@ int32_t NetworkShareTracker::SetUsbNetworkSharing(bool enable) } NetworkShareHisysEvent::GetInstance().SendBehaviorEvent(usbShareCount_, SharingIfaceType::SHARING_USB); } else { - if (curUsbState_ == UsbShareState::USB_NONE) { + if (curUsbState_ != UsbShareState::USB_SHARING) { return NETMANAGER_EXT_SUCCESS; } curUsbState_ = UsbShareState::USB_CLOSING;