Как программно отключить точку доступа Wi-Fi в Android 8.0 (Oreo) (setWifiApEnabled больше не поддерживает эту версию)

Я ссылаюсь на код для включения точки доступа в Android 8.0, это работает. Но я понятия не имею, как это отключить

@RequiresApi(api = Build.VERSION_CODES.O)
private void turnOnHotspot(){
    WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

    manager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback(){

        @Override
        public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {
            super.onStarted(reservation);
            Log.d(TAG, "Wifi Hotspot is on now");
        }

        @Override
        public void onStopped() {
            super.onStopped();
            Log.d(TAG, "onStopped: ");
        }

        @Override
        public void onFailed(int reason) {
            super.onFailed(reason);
            Log.d(TAG, "onFailed: ");
        }
    },new Handler());
}

Я хочу использовать метод close () из LocalOnlyHotspotReservation, но как получить экземпляр резервирования извне, например reservation.close();

Или как-нибудь можно отключить точку доступа в Android 8.0

[Обновление] Я нашел способ отключить точку доступа

wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);                    
Method method = wifiManager.getClass().getDeclaredMethod("cancelLocalOnlyHotspotRequest");
method.invoke(wifiManager);

Но до сих пор понятия не имею, как использовать close.


person Lee    schedule 20.10.2017    source источник
comment
Возможный дубликат программной точки включения / выключения Wi-Fi HotSpot в Android   -  person Saneesh    schedule 20.10.2017
comment
Но для Android O он больше не поддерживает setWifiApEnabled, он предоставляет LocalOnlyHotspotCallback и LocalOnlyHotspotReservation для включения точки доступа.   -  person Lee    schedule 20.10.2017
comment
@Lee Проверьте этот ответ stackoverflow.com/questions/45984345/   -  person Chandrakanth    schedule 30.11.2017


Ответы (1)


Чтобы отключить его, вам необходимо создать глобальную ссылку для WifiManager.LocalOnlyHotspotReservation, назначить ее в обратном вызове onSatrted () и затем закрыть ее следующим образом

private WifiManager.LocalOnlyHotspotReservation mReservation;

private void turnOffHotspot() {
 if (mReservation != null) {
  mReservation.close();
 }
}

Вы можете сослаться на следующую ссылку, у меня это сработало: Как программно включить / выключить точку доступа Wi-Fi в Android 8.0 (Oreo)

person Arpita    schedule 01.08.2018