安卓WifiLock WIFI_MODE_SCAN_ONLY无法正常工作

8
我正在尝试阻止wifi连接。 我希望我的应用程序可以打开wifi,但不连接已存储在智能手机上的任何网络。 但即使我使用SCAN_ONLY模式,它仍会连接已经“知道”的网络。
    .....
    wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    .....
    wifiManager.setWifiEnabled(true);
    WifiLock scanOnly = wifiManager.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY, "scanOnly");      
scanOnly.acquire(); 

当我已经失望到极点时,我尝试断开连接,以确保状态是WIFI_STATE_ENABLED wifi。应用程序可能无法连接几秒钟,但过一段时间后,它会连接到同一网络...

    wifiManager.setWifiEnabled(true);
    ....
    WHEN (WIFI STATE == WIFI_STATE_ENABLED)
    {wifiManager.disconnect();
scanOnly.acquire();} 

有人能帮我吗? 谢谢

2个回答

1

WifiLock不是为此而设计的。它只能用于“允许应用程序保持Wi-Fi电台唤醒”。这并不禁止任何人连接到wifi。它只是表示“在睡眠模式下,我至少想做到这一点”。 您必须按照上面Peanut所说的方式操作:获取所有存储网络的列表,然后在BroadcastReceiver中禁用wifi。

@Override
public void onReceive(Context c, Intent intent) {
    saveWifiList(mainWifi.getScanResults());

    unregisterReceiver(this);
    mainWifi.setWifiEnabled(false);

    showWifiList();     
}

0
一种方法是获取所有存储的网络列表,然后禁用它们。您可能希望在某个地方存储它们的状态,以便在完成后可以恢复初始状态。

我忘了告诉你:你可以使用函数 enableNetwork(int netId)disableNetwork(int netID) 来启用和禁用网络。 - Peanut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接