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();} 

有人能帮我吗?Tks

4

2 回答 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();     
}
于 2013-09-03T22:51:31.237 回答
0

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

于 2012-01-21T14:34:34.067 回答