我正在尝试阻止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
答案 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)
一种方法是获取所有存储网络的列表,然后禁用它们。您可能希望将其状态存储在某处,以便在完成后恢复初始状态。