Я разработал приложение, использующее широковещательный приемник Wifi. Мое требование - получить вызов функции, когда Wi-Fi подключен к маршрутизатору, получив IP-адрес, а также вызовет другую функцию, когда Wi-Fi отключен от ранее подключенного маршрутизатора.широковещательный приемник wifi несколько намерений
Я использовал это в Manifest
<action android:name="android.net.wifi.STATE_CHANGE" />
для регистрации широковещательного приемника.
и Broadcast Receiver класса в OnReceive
:
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = networkInfo.getState();
if (state == NetworkInfo.State.CONNECTED) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wi = wifiManager.getConnectionInfo();
Log.e("++++WiFi Conected","++++WiFi Conected");
Flags.wifiState = true;
updateWifiSyncTrue(context);
if (wi.getIpAddress() != 0) {
intent = new Intent(context, ConnectionService.class);
intent.putExtra("intentValue", "signalOn");
intent.putExtra("bssId", wi.getBSSID());
context.startService(intent);
}
}
if (state == NetworkInfo.State.DISCONNECTED) {
Log.e("++++WiFi DisConected","++++WiFi DisConnected");
Flags.wifiState = false;
updateWifiSyncFalse(context);
updateRouterSyncFalse(context);
intent = new Intent(context, ConnectionService.class);
intent.putExtra("intentValue", "signalOff");
context.startService(intent);
}
Каждая вещь работала до KitKat Но когда я проверить это с версии леденец по вызову много раз Receive для.
Когда я включаю свой Wi-Fi на его результате, как Состояние: Idle --Connecting-- удостовер - Пленница Check - Connected - Connected. Иногда также отключен.
при выключении. Connected - Отключен - Разъединение - Разъединение - Разъединение
отладочной результат 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].
Прошу помочь мне в то же самое. Использование моего кода при включении Wi-Fi CONNECTED
Состояние выполняется несколько раз, а также DISCONNECTED
.
И когда WIFI отключен Подключено состояние, а затем 4-5 Состояние отключено.
Я использовал телефон HTC для тестирования.
Я использовал простую кодировку, должен ли я получить более глубокое условие для проверки этого? (Подробное состояние и т. Д.)
Каков наилучший способ решения этого решения?
Благодарим за изменение и исправление –