Android WifiLock WIFI_MODE_SCAN_ONLY无效

时间:2011-10-27 11:17:11

标签: android wifi wifimanager

我正在尝试阻止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

2 个答案:

答案 0 :(得分:1)

WifiLock不是为了这个。仅适用于“允许应用程序保持Wi-Fi无线电唤醒”。这并不禁止任何人连接到wifi。只说“我希望能够在睡眠模式下至少做到这一点”。 你必须做你上面说的花生:获取所有存储网络的列表,然后在BroadcastReceiver中禁用wifi。

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

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

    showWifiList();     
}

答案 1 :(得分:0)

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