#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: ссылка на метод в исходниках:
Комментариев нет:
Отправить комментарий