Hotspot на Android 7.0 не позволяет устройствам подключаться, если включен программно - PullRequest
0 голосов
/ 08 ноября 2018

Я сталкиваюсь с очень странным поведением. Я включаю точку доступа Wi-Fi программно, используя следующую функцию

    public static boolean onTethering(Context context) {
    WifiManager wifimanager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    WifiConfiguration wificonfiguration = null;
    try {
        // if WiFi is on, turn it off
        if(isApOn(context)) {
            if (wifimanager != null) {
                wifimanager.setWifiEnabled(false);
            }
        }
        Method method = wifimanager != null ? wifimanager.getClass().getMethod("startTethering", WifiConfiguration.class, boolean.class) : null;

       // Method method = wifimanager.getClass().getDeclaredMethod("startTethering",int.class,boolean.class,callbackClass,Handler.class);

        if (method != null) {
            method.invoke(wifimanager, null, !isApOn(context));
        }else{
            return false;
        }
        return true;
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

Функция работает довольно хорошо в Android Lollipop, а также в Marshmallow. Но когда я установил свое приложение в Android 7.0, оно показывает очень странное поведение. Hotspot включен и, кажется, работает нормально, но когда я пытаюсь подключить свои устройства к точке доступа, она застревает в получении петли IP-адреса. Требуется очень много времени, чтобы подключиться к другому устройству Android, а иногда он полностью выходит из строя.

Я пытаюсь подключить NodeMCU к этой точке доступа.

Примечание Если я вручную отключаю Hotspot от настроек, устройства подключаются к нему мгновенно.

Есть что-то, чего мне не хватает?

...