Android WifiLock WIFI_MODE_SCAN_ONLY не работает - PullRequest
8 голосов
/ 27 октября 2011

Я пытаюсь заблокировать соединения Wi-Fi. Я хочу, чтобы мое приложение включало Wi-Fi, но не подключалось ни к одной сети, которая уже хранится на смартфоне. Но даже после того, как я использую режим 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 Wi-Fi. То, что приложение не может подключиться в течение нескольких секунд, но через некоторое время оно подключается к той же сети ...

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

Может ли кто-нибудь мне помочь? Tks

Ответы [ 2 ]

1 голос
/ 04 сентября 2013

WifiLock не для этого.Только для «Позволяет приложению держать Wi-Fi радио включенным».Это не запрещает никому подключаться к Wi-Fi.Только говорит: «Я хочу быть в состоянии сделать хотя бы это в режиме сна».Вы должны сделать то, что вы сказали Peanut выше: получить список всех сохраненных сетей и затем отключить Wi-Fi в BroadcastReceiver.

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

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

    showWifiList();     
}
0 голосов
/ 21 января 2012

Один из способов - получить список всех сохраненных сетей, а затем отключить их.Возможно, вы захотите сохранить их состояние где-нибудь, чтобы после завершения восстановить начальное состояние.

...