我想忘记设备中的 wifi 连接网络。我浏览了大部分代码,但它们无法正常工作。
public void disconnectWifi(){
Log.i(TAG,"In disconnectWifi()");
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
wifiManager.forget(wifiInfo.getNetworkId(), new WifiManager.ActionListener() {
@Override
public void onSuccess() {
Log.i(TAG,"wifi is disconnected");
}
@Override
public void onFailure(int reason) {
Log.i(TAG,"wifi is failed disconnected");
}
});
}
这里永远不会调用成功。
public void disconnectCurrentNetwork(){
WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if(wifiManager != null && wifiManager.isWifiEnabled()){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
Log.d(TAG,"lIST"+list);
int netId = wifiManager.getConnectionInfo().getNetworkId();
wifiManager.removeNetwork(netId);
}
}
这里 netid 显示 -1 值,它也不会忘记 wifi 网络。我已经读到它不应该工作,你必须使用必须提供权限 WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN。我还在清单中提到了这一点,但没有发生任何变化。我已经读到,你的应用程序现在可以更改 WifiConfiguration 对象的状态,前提是你创建了这些对象. 您不得修改或删除用户或其他应用创建的 WifiConfiguration 对象。由于我们可以通过进入手机设置忘记网络。所以应该有一些方法可以忘记WiFi网络
<uses-permission android:name="WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN"/>