Как определить состояние Wi-Fi-модема

Я хочу знать, как определить состояние Wi-Fi-модема. Я видел статью: Android 2.3 wifi hotspot API Но это не сработает! Он всегда возвращает WIFI_AP_STATE_DISABLED = 1. Это не зависит от реального состояния Wi-Fi-модема.

Использование отражения:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); Method[] wmMethods = wifi.getClass().getDeclaredMethods(); for (Method method: wmMethods) { if (method.getName().equals("isWifiApEnabled")) { try { boolean isWifiAPenabled = method.invoke(wifi); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } 

Как вы можете видеть здесь

Во-первых, вам нужно получить WifiManager:

 Context context = ... final WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 

Затем:

 public static boolean isSharingWiFi(final WifiManager manager) { try { final Method method = manager.getClass().getDeclaredMethod("isWifiApEnabled"); method.setAccessible(true); //in the case of visibility change in future APIs return (Boolean) method.invoke(manager); } catch (final Throwable ignored) { } return false; } 

Также вам нужно запросить разрешение в AndroidManifest.xml:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

В дополнение к рефлексии, чтобы получить обновление статуса модема Wi-Fi, вы можете прослушать эту трансляцию. Действие:

 IntentFilter filter = new IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED"); 

Чтобы получить обновление всех мошенников:

 IntentFilter filter = new IntentFilter("android.net.conn.TETHER_STATE_CHANGED"); 

Эти действия скрыты в исходном коде Android