公司想着把自己的产品(中央报警器)设置为主页面让用户永远只能在这款产品上面进行一个操作,当时我写的时候连接WIFI是需要进入系统设置页面去连接的(主要是当时我也不会写WIFI功能啊!!!)然后不想什么就来什么了!产品让我把WIFI功能写一下(嘤嘤嘤,我才是刚入Android的小白,我怎么写啊!脑阔疼脑阔疼)
需求
获取wifi列表 显示wifi强度 连接wifi 显示wifi连接信息(只是我理解出来的,当时产品说让我写个wifi脱离系统QAQ,wifi脱离系统是怎么个连接wifi法?问他也是说:这是你的专业范围,你自己去理解。微笑面对一切)
然后发了一顿牢骚:没做过呀,我不会啊,这怎么写啊,闲聊两小时不如百度一分钟(其实是差不多把所有wifi的案例都看完了)
网上有很多关于获取wifi列表,并连接wifi的文章,然后我每一篇都点来看看。然后发现,耶,还蛮有趣的!一如研究深似海,发现了各种问题,然后自己记在小本本上,万一我遇见了呢?是不是就不用死的太惨了~
权限
虽然是刚入Android的小白,但是发现安卓的每一次更新都是权限的加强,刚开始的时候就是给权限折磨的要死!!!记得我写电话短信功能的时候,给了权限但是就是拨打不了手机号也发送不了短信,后面还是给了权限在手动打开,下面献上关于wifi的权限好叭!!!
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
你们以为这就完了???哇,太天真了叭。确实,很老很老的版本确实可以这样就完事了,但是6.0版本后的就需要定位了叭(这个是我网上看到的,不是我也不知道,反正我知道现在是需要就对了嘻嘻)继续给大家献上后面的权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>、
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
好了,你权限都加完了。但是发现还是不行,你就跑过来问我,小李怎么回事啊?不行啊,我都加了权限了为什么还是获取不到wifi的列表呢?(呆子!!!我都说了要手动打开手动打开了!不知道怎么手动打开嘛?那我继续把代码给你好了呀!满意了叭)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
requestPermissions(new String[] {
Manifest.permission.CALL_PHONE,Manifest.permission.ACCESS_COARSE_LOCATION},
0x1234);
}
你们也可以用这种方式去手动打开其他的权限,百度上一大堆(百度yyds!!!)
权限的问题解决了那就是编码了!但你打开权限你就成功了一半了!反正我是这么认为的,编码嘛easy啦!
编码部分
掐指一算,有些人是不是会问,既然权限给了,我怎么编码扫描wifi呢?
唉,那你是真的跟三天前的我一样,啥也不会啊我的宝,给你吧给你吧,谁要小李心好呢?
扫描wifi
public void startScan() {
wifiManager.startScan();
// 扫描返回结果列表
scanResultList = wifiManager.getScanResults();
// 扫描配置列表
wifiConfigList = wifiManager.getConfiguredNetworks();
}
噗嗤,你不会还要我教你怎么去显示叭?哎呀,这个也就几行代码的事情了呀
@SuppressLint("NewApi")
private ArrayList