android6.0 切换到指定wifi
遇到的问题:官方文档才是正理
1、在网上找到一个wifi工具类,写了初步的切换到指定wifi的demo,测试后,一切ok。换到指定设备的wifi,失败了,点击连接,app无响应了。
2、wifi切换太慢了,同事觉得不稳定,继续改。根据设备的wifi加密模式,修改了创建wifi的方式,测试之后基本上都能连上,偶尔不能切换成功
3、最近一个偶然的机会又来测试wifi。额…..失败了,并且一直切换不过去,简直不是一般的难受。
![android6.0 切换到指定wifi](https://img.it610.com/image/info8/d41b6ee8742d4f6db6512edd188b9088.jpg)
文章图片
【android6.0 切换到指定wifi】上述切换失败的原因
android6.0 只允许操作自己创建的WifiConfiguration。
上面遇到的问题在于自己对“个人创建创建WifiConfiguration” 理解不到位。以及对wifi加密模式的不清楚,我们的设备是wpa2的加密模式,直接使用了wpa2的加密模式,切换速度比以前更快了,而且成功率也高了很多。
wifi的种类
wifi有两种,一种是自己在代码里面创建,一种是别人的.
别人的wifi:主要包括由用户手动输入密码连接的wifi和其他app创建的wifi—这里简称为系统wifi
自己的wifi:自己在app里面创建的wifi—-这里简称为个人wifi
连接成功了 则表示创建wifi成功了。
对wifi的操作
系统wifi:虽然可以通过wifiManager的savedConfiguration方法获取到指定wifi对应的Configuration,但是并不能进行具体的操作,add该wifi,会直接返回-1(addNetwork(WifiConfigurationconfig)=-1),enableNetwork(config)时会导致app无响应,removeNetwork(config)=false,移除系统wifi也不会成功。详见下列的测试过程。
个人wifi:可以进行add、enable、remove操作,详见下列的测试过程 。
测试过程
WifiConfiguration wifiNewConfiguration = createWifiInfo(aimWifiName, aimWifiPwd);
//使用wpa2的wifi加密方式
int newNetworkId = wifiManager.addNetwork(wifiNewConfiguration);
Log.e("MainActivity", "newNetworkId:" + newNetworkId);
/**
* addNetwork打印结果:
* 1、未保存密码==32
* 2、在代码里面保存了密码==32--意思是在代码里面add了 没有remove的情况
* 3、手动连接了密码==-1
*/
boolean enableNetwork = wifiManager.enableNetwork(newNetworkId, true);
//newNetworId在操作系统wifi的时候,可以换成通过saveConfiguration中WifiConfiguration 获取到networkId来继续进行测试,这里就忽略啦
Log.e("MainActivity", "enableNetwork:" + enableNetwork);
/**
* enableNetwork打印结果:
* 1、未保存密码切换成功
* 2、在代码里面保存了密码切换成功
* 3、手动连接了密码app无响应了
*/
解决方案 android6.0 运行时环境在demo里面。
//最终解决方案
WifiConfiguration wifiNewConfiguration = createWifiInfo(aimWifiName, aimWifiPwd);
//使用wpa2的wifi加密方式
int newNetworkId = mWifiManager.addNetwork(wifiNewConfiguration);
if (newNetworkId == -1) {
Log.e("MainActivity", "操作失败,需要您到手机wifi列表中取消对设备连接的保存");
} else {
boolean enableNetwork = mWifiManager.enableNetwork(newNetworkId, true);
if (!enableNetwork) {
Log.e("MainActivity", "切换到指定wifi失败");
} else {
Log.e("MainActivity", "切换到指定wifi成功");
}
}
demo地址 https://github.com/WhatWeCan/WifiDemo
推荐阅读
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 一个小故事,我的思考。
- 第三节|第三节 快乐和幸福(12)
- 你到家了吗
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 死结。
- 赢在人生六项精进二阶Day3复盘
- 子龙老师语录
- 异地恋中,逐渐适应一个人到底意味着什么()
- 即将到手三百万