自定义获取WI-FI列表及相关设置
16lz
2021-01-26
辗转反则好长时间,转眼间自己从事android行业已经有三年了,却什么都没留下来,在这行业中奋斗,过着一个人的生活。。。。
好了,废话不多说了,上干货。
Wi-Fi在android 中是不可切分的一部分,并且是生活中不可切分的部分,一般情况下,在应用开发的时候会很少用到相关的东西,因为没有人愿意打开你的应用去设置网络连接,都是通过系统设置连接Wi-Fi,进入我们的应用,但是在某些应用中不乏缺少使用Wi-Fi的基本使用的
Wi-Fi相关的基本信息不做多讲,直接说几个常用的
1、获取Wi-Fi列表
在获取Wi-Fi列表的时候得获取Wi-Fi管理类Wif iManager
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);接着判断Wi-Fi是否打开
if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true);}但是不得不说的是,在android6.0的时候Google工程师可能在开发的时候感觉Wi-Fi的打开或许会用到定位,所以度源码发现,要获取到Wi-Fi列表,必须打开Wi-Fi和GPS定位,缺一不可,
wifiManager.startScan();//开始扫描可以通过getScanResults()方法获取到Wi-Fi列表 此方法的返回值是一个List集合,对象是ScanResults,这个对象中包含了Wi-Fi的一些基本信息,比如SSID Wi-Fi当前选择的名称,capableitiesWi-Fi的验证方式等,具体需要的信息可以查看ScanResults源码。
list = wifiManager.getScanResults();
2、当然我们获取到Wi-Fi列表的时候肯定需要对列表进行操作,比如当点击需要连接的Wi-Fi条目时,进行输入密码进行链接,并且不需要root手机,但是在这个过程中我们需要一个类帮助我们完成链接WifiConfiguration,这个类时对Wi-Fi的配置类,在这个类中将设置将要链接的Wi-Fi的信息
WifiConfiguration wc = new WifiConfiguration();wc.SSID = "\"" + ssid + "\""; Wi-Fi名称wc.preSharedKey = "\"" + mWifiPwd.getText().toString().trim() + "\""; //密码wc.status = WifiConfiguration.Status.ENABLED;//....其他配置wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);当我们配置完成后,将配置信息传递
int NetId = mWifiManager.addNetwork(config);return mWifiManager.enableNetwork(NetId, true);根据返回fan值可以判断Wi-Fi是否连接成功,但是上边return的返回值,不能完美的解释是否登录成功,因为他的内部实现的是一个耗时操作,有可能在密码正确的情况下返回false,那用什么来判断连接是否成功呢?答案是广播,监听Wi-Fi是否连接成功的广播,广播的action是
android.bluetooth.adapter.action.SCAN_MODE_CHANGED
接收到广播后Wi-Fi连接成功!!!在开发的过程中学习过其他人的博客,如果有相同或相似的地方,还请多多包含,
更多相关文章
- Android之判断设备网络连接状态,并判断连接方式
- 获取Android设备唯一标识码以及其他信息
- Android基础知识复习之打开照相机拍照并获取照片
- Android相机、相册获取图片显示并保存到SD卡
- 【android】利用ContentObserver监听短信来获取验证码
- Android(安卓)屏蔽蓝牙连接时的首次配对系统弹窗
- [Android]快递查询——API的简单应用
- ReactNative学习笔记之调用原生模块(进阶)之Callback、Promise使用
- 个人解读Activity之四-Part1