【问题标题】:How to turn off wifi hotspot programmatically in Android 8.0 (Oreo) (setWifiApEnabled is not support this version anymore)如何在 Android 8.0 (Oreo) 中以编程方式关闭 wifi 热点(setWifiApEnabled 不再支持此版本)
【发布时间】:2018-04-01 06:44:50
【问题描述】:

我参考了 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());
}

我想使用 LocalOnlyHotspotReservation 的 close() 方法,但是如何从外部获取预订实例,例如 reservation.close();

或者任何方式都可以在 Android 8.0 中禁用热点

[更新]我找到了一种可以禁用热点的方法

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

但是,仍然不知道如何使用 close。

【问题讨论】:

标签: android android-wifi android-8.0-oreo hotspot


【解决方案1】:

为了禁用它,您需要为 WifiManager.LocalOnlyHotspotReservation 创建一个全局引用,在 onSatrted() 回调中分配它,然后按如下方式关闭它

private WifiManager.LocalOnlyHotspotReservation mReservation;

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

您可以参考以下链接,它对我有用: How to turn on/off wifi hotspot programmatically in Android 8.0 (Oreo)

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    相关资源
    最近更新 更多