#java #android #wifi
Как можно средствами Java узнать, что телефон находиться в режиме "точка доступа"? Мне необходимо узнать, раздаёт ли телефон Wi-Fi / подключен ли к нему. Вот код на проверку подключения к Wi-Fi: public boolean isWiFiOn() { final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); if(wifi != null) switch(wifi.getWifiState()) { case(WifiManager.WIFI_STATE_DISABLED): case(WifiManager.WIFI_STATE_DISABLING): return false; default: return true; } return false; } Но этот код возвращает false, если телефон в режиме точки доступа. Как в таком случае узнать, раздаёт ли он Wi-Fi?
Ответы
Ответ 1
Официально узнать нельзя, но Android на то и "андроид", что много чего можно сделать при помощи хаков: Есть спрятанный @hide метод getWifiApState: Method method = wifiManager.getClass().getDeclaredMethod("getWifiApState"); method.setAccessible(true); int actualState = (Integer) method.invoke(wifiManager, (Object[]) null); Далее actualState сравниваем с такими константами: public static int WIFI_AP_STATE_DISABLING = 10; //выключается public static int WIFI_AP_STATE_DISABLED = 11; //выключен public static int WIFI_AP_STATE_ENABLING = 12; //включается public static int WIFI_AP_STATE_ENABLED = 13; //включен public static int WIFI_AP_STATE_FAILED = 14; //сломалсо UPD: ссылка на метод в исходниках:
Комментариев нет:
Отправить комментарий