广播过滤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相关推荐

  1. Android下自动连接指定SSID的WIFI的简单实现

    一.关于WiFi模块的概述: 1.在Android developer的文档中WiFi模块的信息: 首先,登记广播的监听:其次,请求扫描wifi信号:最后获取扫描到的wifi信息. 2.在广播监听到结 ...

  2. Android之通过用户名和密码连接指定wifi热点(兼容Android9.0和Android10.0和addNetwork(wifiNewConfiguration)返回-1问题)

    1 需求 通过用户名和密码连接指定wifi热点,网上的代码乱七八糟,没几个可以用,我这边整理了下,测试了华为Android9.0和小米Android9.0和10.0和OPPO Android9.0 都 ...

  3. android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享

    本文主要向大家介绍Android应用开发,给定App相应SSID及密码,连接指定WIFI,希望对大家学习Android应用开发有所帮助. 1.MainActivity.java包含工具类WifiAdm ...

  4. android官方wifidemo,Android连接指定Wifi的Demo

    给定App相应SSID及密码,连接指定WIFI. 1.MainActivity.java包含工具类WifiAdmin package com.example.connectwifi; import j ...

  5. android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...

    下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...

  6. 代码实现WIFI自动连接与连接指定WIFI源码

    最近家里老人总是问我如何连接WIFI,和他们电话讲又讲不清楚,于是我想到了写一个,打开自动连接指定WIFI的软件.练练手. 废话不多说,首先布局,简单! 两个文本框一个按钮 <?xml vers ...

  7. kotlin的wifi获取列表和连接指定wifi

    简介 本文实现3个功能: 1.获取位置权限 2.获取wifi列表 3.连接指定wifi 1.添加权限 <uses-permission android:name="android.pe ...

  8. 通过netsh一键连接指定WIFI

    通过netsh的备份和添加配置文件功能实现一键连接指定wifi 1,连接wifi 首先你自己的电脑需要连接上一个wifi,比如这个wifi的名字叫abc. 通过输入密码.变更设置等,连接上wifi 2 ...

  9. ESP8266(基于arduino平台)每篇一个知识点—1.wifi STA模式连接指定wifi

    ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wifi 一.ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wif ...

最新文章

  1. php修改为ajax,php通过ajax实现双击table修改内容
  2. 免费教材丨第52期:人工智能(复杂问题求解的结构和策略)、人工智能哲学
  3. 微软2011 Build大会:Windows 8盛大出场(转)
  4. 解决windows10下面无法抓取charles数据包问题
  5. dram和nand哪个难生产_草缸能不能用陶粒,看完和水草泥的对比,你就知道哪个更好了...
  6. django使用bootstrap快速美化 admin后台
  7. 四年才等来的一天,务必要立志,要下决心!
  8. Tengine HTTPS原理解析、实践与调试
  9. VS2008中源文件与模块生成时的文件不同,仍要让调试器使用它吗
  10. Java数据库篇2——数据库基本操作
  11. 光机学院计算机系,计算机系召开第十二届科技节闭幕式
  12. 3月第四周全球域名解析商:万网DNSPod排名均上升1名
  13. 计算机字符代码表,计算机ASCII码对照表
  14. 周易 —— 文本阅读
  15. 嘻游记 QVOD快播高清电影在线播放下载
  16. python打印字符串数组_python3字符串格式打印:如何从数组打印?
  17. java中数组集合存放位置_java中数组以及集合
  18. NI-VISA监听收发命令 同步或异步读写 示例C和C#源码National Instruments程控电源操作步骤安捷伦
  19. 良心推荐:12个免费学习网站,赶紧收藏
  20. oracle出现ora 12514,Oracle 11g ORA-12514 解决办法

热门文章

  1. python arduino i2c1602_Arduino基础入门—3.连接 IIC 1602 LCD显示文字
  2. 全球手机用户破50亿 手机游戏或成“大戏”
  3. 货物出库管理信息系统
  4. html5c与vr哪个好,VR渲染和CR渲染的对比,哪个更好呢?
  5. 抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(二)
  6. Software Foundation - Coq 函数式编程 (Basics) 题解
  7. 对称加密、非对称加密、数字签名
  8. IMEI是什么? 怎样查手机串号IMEI
  9. adb 判断imei_ADB——查看手机设备信息
  10. 刚用.net写了一个自动投票程序