Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Как программно узнать, что устройство работает в режиме Wi-Fi точки доступа?

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

Комментариев нет:

Отправить комментарий