Android 应用内连接指定 WIFI
广播过滤Action
WifiManager.NETWORK_STATE_CHANGED_ACTION
工具类
package com.yw.wifipage.wifi;import android.content.Context;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;import com.yw.wifipage.receiver.WifiChangeReceiver;public class WifiConnectUtil {private boolean isConnect = false;private WifiChangeReceiver receiver;public void connect(Context context, String ssid, String bssid, String password, int timeOut, IConnectListener listener) {String mssid = ssid.replace("\"", "");WifiConfiguration wifiCong = new WifiConfiguration();wifiCong.allowedAuthAlgorithms.clear();wifiCong.allowedGroupCiphers.clear();wifiCong.allowedKeyManagement.clear();wifiCong.allowedPairwiseCiphers.clear();wifiCong.allowedProtocols.clear();wifiCong.SSID = "\"" + mssid + "\"";wifiCong.BSSID = bssid;wifiCong.preSharedKey = "\"" + password + "\"";//WPA-PSK密码wifiCong.hiddenSSID = false;wifiCong.status = WifiConfiguration.Status.ENABLED;int id = MyNetworkUtil.getInstance().getWifiManager().addNetwork(wifiCong);MyNetworkUtil.getInstance().getWifiManager().enableNetwork(id, true);//注册广播快速监听连接状态receiver = new WifiChangeReceiver(networkInfo -> {if (networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {WifiInfo wifiInfo = MyNetworkUtil.getInstance().getWifiInfo();if (wifiInfo.getSSID().replace("\"", "").equals(mssid)) {isConnect = true;if (receiver != null) {context.unregisterReceiver(receiver);receiver = null;listener.onConnected();}}}});IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);context.registerReceiver(receiver, intentFilter);//延时监听变化new Handler().postDelayed(new Runnable() {@Overridepublic void run() {if (isConnect) {return;}if (receiver != null) {context.unregisterReceiver(receiver);}MyNetworkUtil.getInstance().getWifiManager().removeNetwork(id);MyNetworkUtil.getInstance().getWifiManager().reconnect();listener.onConnectFail();}}, timeOut);}public interface IConnectListener {void onConnected();void onConnectFail();}
}
广播接收器
package com.yw.wifipage.receiver;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Parcelable;public class WifiChangeReceiver extends BroadcastReceiver {private String TAG = "WifiChangeReceiver";private IWIfiChangeCallBack iwIfiChangeCallBack;public WifiChangeReceiver(IWIfiChangeCallBack iwIfiChangeCallBack) {this.iwIfiChangeCallBack = iwIfiChangeCallBack;}@Overridepublic void onReceive(Context context, Intent intent) {Parcelable extra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);if (extra != null) {NetworkInfo networkInfo = (NetworkInfo) extra;if (networkInfo != null) {iwIfiChangeCallBack.onChange(networkInfo);}}}
}
使用方法
new WifiConnectUtil().connect(context, SSID, BSSID, password, 10000, new WifiConnectUtil.IConnectListener() {@Overridepublic void onConnected() {Toast.makeText(context, "连接成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onConnectFail() {Toast.makeText(context, "密码错误", Toast.LENGTH_SHORT).show();}});
Android 应用内连接指定 WIFI相关推荐
- Android下自动连接指定SSID的WIFI的简单实现
一.关于WiFi模块的概述: 1.在Android developer的文档中WiFi模块的信息: 首先,登记广播的监听:其次,请求扫描wifi信号:最后获取扫描到的wifi信息. 2.在广播监听到结 ...
- Android之通过用户名和密码连接指定wifi热点(兼容Android9.0和Android10.0和addNetwork(wifiNewConfiguration)返回-1问题)
1 需求 通过用户名和密码连接指定wifi热点,网上的代码乱七八糟,没几个可以用,我这边整理了下,测试了华为Android9.0和小米Android9.0和10.0和OPPO Android9.0 都 ...
- android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享
本文主要向大家介绍Android应用开发,给定App相应SSID及密码,连接指定WIFI,希望对大家学习Android应用开发有所帮助. 1.MainActivity.java包含工具类WifiAdm ...
- android官方wifidemo,Android连接指定Wifi的Demo
给定App相应SSID及密码,连接指定WIFI. 1.MainActivity.java包含工具类WifiAdmin package com.example.connectwifi; import j ...
- android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...
下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...
- 代码实现WIFI自动连接与连接指定WIFI源码
最近家里老人总是问我如何连接WIFI,和他们电话讲又讲不清楚,于是我想到了写一个,打开自动连接指定WIFI的软件.练练手. 废话不多说,首先布局,简单! 两个文本框一个按钮 <?xml vers ...
- kotlin的wifi获取列表和连接指定wifi
简介 本文实现3个功能: 1.获取位置权限 2.获取wifi列表 3.连接指定wifi 1.添加权限 <uses-permission android:name="android.pe ...
- 通过netsh一键连接指定WIFI
通过netsh的备份和添加配置文件功能实现一键连接指定wifi 1,连接wifi 首先你自己的电脑需要连接上一个wifi,比如这个wifi的名字叫abc. 通过输入密码.变更设置等,连接上wifi 2 ...
- ESP8266(基于arduino平台)每篇一个知识点—1.wifi STA模式连接指定wifi
ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wifi 一.ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wif ...
最新文章
- php修改为ajax,php通过ajax实现双击table修改内容
- 免费教材丨第52期:人工智能(复杂问题求解的结构和策略)、人工智能哲学
- 微软2011 Build大会:Windows 8盛大出场(转)
- 解决windows10下面无法抓取charles数据包问题
- dram和nand哪个难生产_草缸能不能用陶粒,看完和水草泥的对比,你就知道哪个更好了...
- django使用bootstrap快速美化 admin后台
- 四年才等来的一天,务必要立志,要下决心!
- Tengine HTTPS原理解析、实践与调试
- VS2008中源文件与模块生成时的文件不同,仍要让调试器使用它吗
- Java数据库篇2——数据库基本操作
- 光机学院计算机系,计算机系召开第十二届科技节闭幕式
- 3月第四周全球域名解析商:万网DNSPod排名均上升1名
- 计算机字符代码表,计算机ASCII码对照表
- 周易 —— 文本阅读
- 嘻游记 QVOD快播高清电影在线播放下载
- python打印字符串数组_python3字符串格式打印:如何从数组打印?
- java中数组集合存放位置_java中数组以及集合
- NI-VISA监听收发命令 同步或异步读写 示例C和C#源码National Instruments程控电源操作步骤安捷伦
- 良心推荐:12个免费学习网站,赶紧收藏
- oracle出现ora 12514,Oracle 11g ORA-12514 解决办法
热门文章
- python arduino i2c1602_Arduino基础入门—3.连接 IIC 1602 LCD显示文字
- 全球手机用户破50亿 手机游戏或成“大戏”
- 货物出库管理信息系统
- html5c与vr哪个好,VR渲染和CR渲染的对比,哪个更好呢?
- 抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(二)
- Software Foundation - Coq 函数式编程 (Basics) 题解
- 对称加密、非对称加密、数字签名
- IMEI是什么? 怎样查手机串号IMEI
- adb 判断imei_ADB——查看手机设备信息
- 刚用.net写了一个自动投票程序