Java 无线广播接收器多意图
我开发了一个使用Wifi广播接收器的应用程序。我的要求是通过获取IP地址在Wifi连接到路由器时调用函数,以及在Wifi与以前连接的路由器断开连接时调用另一个函数 我在清单中使用了这个Java 无线广播接收器多意图,java,android,broadcastreceiver,android-broadcastreceiver,wifimanager,Java,Android,Broadcastreceiver,Android Broadcastreceiver,Wifimanager,我开发了一个使用Wifi广播接收器的应用程序。我的要求是通过获取IP地址在Wifi连接到路由器时调用函数,以及在Wifi与以前连接的路由器断开连接时调用另一个函数 我在清单中使用了这个 <action android:name="android.net.wifi.STATE_CHANGE" /> 直到KitKat,每件事都起了作用 但当我用棒棒糖测试这个版本的时候,我收到了很多次的来电 当我打开WiFi时,其结果是 声明: 空闲--连接--身份验证--捕获检查--连接--连接。
<action android:name="android.net.wifi.STATE_CHANGE" />
直到KitKat,每件事都起了作用 但当我用棒棒糖测试这个版本的时候,我收到了很多次的来电 当我打开WiFi时,其结果是 声明: 空闲--连接--身份验证--捕获检查--连接--连接。 有时也会断开连接 关闭时。 已连接--已断开--已断开--已断开--已断开 NetworkInfo的调试结果如下:
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/OBTAINING_IPADDR, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false].
我恳请在这方面帮助我。打开wifi时使用我的代码连接状态会执行多次,并且断开连接状态也会执行多次
当WIFI关闭时,将生成连接状态,然后生成4-5个断开状态
我用HTC手机进行测试
我使用了简单的编码,我是否需要对此进行更深入的条件检查?(详细说明等)
处理此解决方案的最佳方法是什么?当您使用intent filter
android.net.wifi.STATE\u CHANGE
时,它将多次触发广播接收器。例如,如果您正在打开wifi,则广播的onreceive
将在任何地方呼叫1-5次。因此,它将为您提供多个NetworkInfo.State.CONNECTED
,以及同样的断开连接
因此,如果您只想连接或断开一个连接,它的输出意味着只需使用一个布尔标志,并以一种方式正确设置它,即首先启用wifi意味着它应忽略剩余的wifi连接意图,同样,wifi也应断开连接。感谢您的编辑和更正
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/OBTAINING_IPADDR, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false].