IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android:WiFi连接之一 -> 正文阅读

[移动开发]Android:WiFi连接之一

感慨

最近学习安卓WiFi连接,真是一言难尽啊。WiFi连接这部分的资料网上并不多,于是只能官方文档+一直找资料学。即便如此,也是让我自闭了,一堆API弃了,网上找的有的已经不适用了。。。总之就是问题多多,所以还是自己总结一下笔记吧,加深理解,也防止后面自己用到又要四处去找资料。

WIFI连接的相关权限

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission><!--    改变网络状态-->
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!--    改变WIFI状态-->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><!--    获取网络信息状态-->
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><!--    获取WIFI信息状态-->
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!--    允许一个程序访问精良位置(如GPS)-->

打开、关闭WIFI

WiFi的打开和关闭用的 WifiManager 类中的setWifiEnabled方法实现。

打开WiFi:

//首先,创建WifiManager对象
Context context = getApplicationContext();
WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

//判断WiFi是否打开,没有则打开WiFi,res为真则成功打开了
if (!wifiManager.isWifiEnabled()) {
    boolean res = wifiManager.setWifiEnabled(true);
}

关闭WiFi:

//首先,创建WifiManager对象
Context context = getApplicationContext();
WifiManager wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

//判断WiFi是否打开,打开了则关闭WiFi,res为真则成功关闭了
if (wifiManager.isWifiEnabled()) {
    boolean res = wifiManager.setWifiEnabled(true);
}

API29以后 ,这个方法已经被弃用了,没有效果,res 会一直为 false-——其实很多WiFi相关的方法都弃了。一开始我还以为有什么代替的方法,结果查了很久发现,在面向安卓8以后的平台中已经不允许app打开和关闭WiFi,所以是没有新方法的。如果要用,只能这样:
在相应的gradle下把这些改成29以前的
在这里插入图片描述
我是把三个都改了,可能只改一些就行,不过我没试了。

WiFi连接

输入WiFi名称、密码实现连接

// 首先配置一个WifiConfiguration对象
String SSID = "Rair"; 		 //输入WIFI名称
String Password = "88888888";		//输入WIFI密码
//WIFI安全性
WifiCipherType Type = Password.equals("")? WifiConnector.WifiCipherType.WIFICIPHER_NOPASS: WifiConnector.WifiCipherType.WIFICIPHER_WPA
WifiConfiguration config = new WifiConfiguration();
//公认的IEEE 802.11验证算法。
config.allowedAuthAlgorithms.clear();
//公认的的公共组密码。
config.allowedGroupCiphers.clear();
//公认的密钥管理方案。
config.allowedKeyManagement.clear();
//密码为WPA。
config.allowedPairwiseCiphers.clear();
//公认的安全协议。
config.allowedProtocols.clear();
//设置WiFi名称
config.SSID = "\"" + SSID + "\"";
// 开放
if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
    config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
}
// wpa
if (Type == WifiCipherType.WIFICIPHER_WPA) {
	//设置密码
    config.preSharedKey = "\"" + Password + "\""; 	
    //不广播其SSID的网络
    config.hiddenSSID = true;
    config.allowedAuthAlgorithms
            .set(WifiConfiguration.AuthAlgorithm.OPEN);
    config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
    config.allowedPairwiseCiphers
            .set(WifiConfiguration.PairwiseCipher.TKIP);
    // 此处需要修改否则不能自动重联
    // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
    config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    config.allowedPairwiseCiphers
            .set(WifiConfiguration.PairwiseCipher.CCMP);
    config.status = WifiConfiguration.Status.ENABLED;
}
//添加网络
int netID = wifiManager.addNetwork(wifiConfig);
//连接WIFI
boolean enabled = wifiManager.enableNetwork(netID, true);

断开WIFI连接

断开WiFi连接有两种方法

//暂时断开,可以重连
wifiManager.disconnect()
//断开,不可以重连,忘记密码
wifiManager.disableNetwork(netID)

以上代码是网上的代码结合我的学习情况修改

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:02:02  更:2021-09-03 12:03:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:13:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码