仅当用户更改时才更改Android上的Wifi状态

仅当用户更改时才更改Android上的Wifi状态,android,Android,我有一个程序可以定期扫描和列出手机的wifi。 有了android版本API>=18,我就可以轻松获得这些,而无需打开wifi 当版本小于18时,问题在于用户: 设置wifi关闭:我必须打开wifi,扫描,然后再次关闭 打开wifi:我不需要再次关闭它 我尝试注册一个BroadcastReceiver来监听WIFI\u STATE\u CHANGED\u动作,但我如何知道是我改变了WIFI状态还是用户?您可以通过扩展一个将“监听”您创建的自定义事件的BroadcastReceiver来实现这

我有一个程序可以定期扫描和列出手机的wifi。 有了android版本API>=18,我就可以轻松获得这些,而无需打开wifi

当版本小于18时,问题在于用户:

  • 设置wifi关闭:我必须打开wifi,扫描,然后再次关闭
  • 打开wifi:我不需要再次关闭它

我尝试注册一个BroadcastReceiver来监听WIFI\u STATE\u CHANGED\u动作,但我如何知道是我改变了WIFI状态还是用户?

您可以通过扩展一个将“监听”您创建的自定义事件的
BroadcastReceiver来实现这种行为

无论您做什么,系统都将广播
WIFI\u STATE\u CHANGED\u ACTION
,因此您要做的是广播您创建的自定义意图,并在应用程序内的WIFI状态从更改时由
广播接收器捕获


BroadcastReceiver
只收听您的广播,然后在广播接收器的
onReceive()
方法中激活WiFi。

如何更改应用程序中WiFi的状态?我实现了这一点,但问题仍然存在,我在应用程序中连接和断开连接ok,但是,我如何知道用户是否按下了按钮,或者我的应用程序是否断开了连接?您将知道用户何时按下按钮,因为当按下按钮时,您的事件将被广播,您将在您的广播接收器中处理,并且在广播接收器中您将激活WiFi。您不会让广播接收器监听系统范围内的
WIFI\u STATE\u CHANGED\u ACTION
,而是让本地广播接收器监听按钮触发的操作。在我的事件中,用户不按任何按钮,就是这样,它会定期打开WIFI进行扫描,然后必须将其保持在原始状态,你的工作流程不起作用。让我们来解决这个问题,你能分享你定期打开wifi扫描的代码吗?我们将一步一步地看我们是否能解决这个问题。文件上有。它运行得不好,也不太漂亮(仅针对一个简单的项目),但我在sendBroadcast(getWifiStatus)中尝试了您的方法;这是我尝试更改wifi状态的地方,在registerReceiver(…,intentFilter)中,如果wifi已经打开,我可以更改回状态。此事件获取wifi扫描结果;谢谢