Android获取当前WIFI所有信息:

我在这里提供一个获取WIFI信息的工具类,里边包含的方法有:

1、Android创建一个创建一个WifiLock

2、Android打开WIIF,Andorid关闭WIFI

3、用路由器或者热点的WIFI名称和WIFI密码配置一个连接WIFI的Config

4、连接一个已经配置好的WIFI

5、断开指定的WIFI

6、Andorid创建WIFI热点

7、获取当前连接的路由器的IP地址

8、获取手机在当前路由器中的局域网IP地址

9、获取当前连接的WIFI的名称

10、获取本机当前Wlan Mac地址

11、扫描当前WIFI,获得手机WIFI列表


/** * @author YOLANDA * @Time 2015年3月2日 上午10:34:00 */public class WifiUtil {private static WifiUtil _WifiUtil;/**WifiManager**/public WifiManager mWifiManager;/**能够阻止wifi进入睡眠状态,使wifi一直处于活跃状态**/private WifiManager.WifiLock mWifilock;/** * 初始化 * @author YOLANDA * @param context */private WifiUtil(Context context) {this.mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);}/** * 实例 * @author YOLANDA * @param context * @return */public static WifiUtil getInstance(Context context){if(_WifiUtil == null){_WifiUtil = new WifiUtil(context);}return _WifiUtil;}/*=======================Wifi Lock========================*//** * 创建一个WifiLock * @author YOLANDA */public void createWifiLock() {this.mWifilock = this.mWifiManager.createWifiLock("WifiLock");}/** * 锁定WifiLock,当下载大文件时需要锁定 * @author YOLANDA */public void lockWifi() {this.mWifilock.acquire();}/** * 解锁WifiLock * @author YOLANDA */public void unlockWifi() {if(mWifilock.isHeld()) { //判断是否锁定  mWifilock.acquire();}}/*=======================Wifi Info========================*//** * 打开Wifi * @author YOLANDA */public void openWifi() {if(!this.mWifiManager.isWifiEnabled()){ //当前wifi不可用this.mWifiManager.setWifiEnabled(true);}}/** * 关闭Wifi * @author YOLANDA */public void closeWifi() {if(mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);}}/** * 配置一个wifi连接信息 * @author YOLANDA * @param ssid * @param passawrd * @param passType 密码类型 * @param configurationType 配置类型 * @return */public WifiConfiguration createWifiInfo(String ssid, String passawrd, PassType passType, ConfigurationType configurationType) {//配置网络信息类WifiConfiguration localWifiConfiguration1 = new WifiConfiguration();//设置配置网络属性localWifiConfiguration1.allowedAuthAlgorithms.clear();localWifiConfiguration1.allowedGroupCiphers.clear();localWifiConfiguration1.allowedKeyManagement.clear();localWifiConfiguration1.allowedPairwiseCiphers.clear();localWifiConfiguration1.allowedProtocols.clear();switch (configurationType) {case Wifi://Wifi连接localWifiConfiguration1.SSID = ("\"" + ssid + "\"");WifiConfiguration localWifiConfiguration2 = isExsits(ssid);if(localWifiConfiguration2 != null) {mWifiManager.removeNetwork(localWifiConfiguration2.networkId); //从列表中删除指定的网络配置网络}switch (passType) {case SimplePass://简单密码localWifiConfiguration1.hiddenSSID = true;localWifiConfiguration1.wepKeys[0] = ("\"" + passawrd + "\"");break;case WapPass://wap密码localWifiConfiguration1.preSharedKey = ("\"" + passawrd + "\"");localWifiConfiguration1.hiddenSSID = true;localWifiConfiguration1.allowedAuthAlgorithms.set(0);localWifiConfiguration1.allowedGroupCiphers.set(2);localWifiConfiguration1.allowedKeyManagement.set(1);localWifiConfiguration1.allowedPairwiseCiphers.set(1);localWifiConfiguration1.allowedGroupCiphers.set(3);localWifiConfiguration1.allowedPairwiseCiphers.set(2);break;default://没有密码localWifiConfiguration1.allowedKeyManagement.set(0);break;}break;default://AP热点localWifiConfiguration1.SSID = ssid;localWifiConfiguration1.allowedAuthAlgorithms.set(1);localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);localWifiConfiguration1.allowedKeyManagement.set(0);localWifiConfiguration1.wepTxKeyIndex = 0;switch (passType) {case SimplePass://简单密码localWifiConfiguration1.hiddenSSID = true;//网络上不广播ssidlocalWifiConfiguration1.wepKeys[0] = passawrd;break;case WapPass://wap密码localWifiConfiguration1.preSharedKey = passawrd;localWifiConfiguration1.allowedAuthAlgorithms.set(0);localWifiConfiguration1.allowedProtocols.set(1);localWifiConfiguration1.allowedProtocols.set(0);localWifiConfiguration1.allowedKeyManagement.set(1);localWifiConfiguration1.allowedPairwiseCiphers.set(2);localWifiConfiguration1.allowedPairwiseCiphers.set(1);break;default://没有密码localWifiConfiguration1.wepKeys[0] = "";localWifiConfiguration1.allowedKeyManagement.set(0);localWifiConfiguration1.wepTxKeyIndex = 0;break;}break;}return localWifiConfiguration1;}/** * 密码类型 * @Project SmartControl * @Class WifiUtil.java * @author YOLANDA * @Time 2015年3月2日 上午10:34:55 */public enum PassType{/**无密码**/NullPass,/**简单密码,Net上不广播SSID**/SimplePass,/**wap密码**/WapPass;}/** * Wifi配置类型 * @Project SmartControl * @Class WifiUtil.java * @author YOLANDA * @Time 2015年3月2日 上午10:35:01 */public enum ConfigurationType{/**Wifi类型**/Wifi,/**AP类型**/AP;}/** * 添加一个网络,用返回的ID call {@link #enableNetwork(int)} * @see #addNetworkConnect(WifiConfiguration) * @author YOLANDA * @param wifiConfiguration * @return the ID of the newly created network description. This is used in *         other operations to specified the network to be acted upon. *         Returns {@code -1} on failure. */public int addNetwork(WifiConfiguration wifiConfiguration) {return mWifiManager.addNetwork(wifiConfiguration);}/** * 连接指定添加的网络 * 用 {@link #addNetwork(WifiConfiguration)} 返回的ID * @author YOLANDA * @param networkId */public boolean enableNetwork(int networkId, boolean disableOthers) {return mWifiManager.enableNetwork(networkId, disableOthers);}/** * 添加指定网络并连接 * @see #addNetwork(WifiConfiguration) * @see #enableNetwork(int) * @author YOLANDA * @param wifiConfiguration * @return */public boolean addNetworkConnect(WifiConfiguration wifiConfiguration, boolean disableOthers) {int i = mWifiManager.addNetwork(wifiConfiguration);return enableNetwork(i, disableOthers);}/** * 断开指定id的wifi * @author YOLANDA * @param paramInt WifiConfiguration.networkId */public void disconnectWifi(WifiConfiguration wifiConfiguration) {if(wifiConfiguration != null)disconnectWifi(wifiConfiguration.networkId);}/** * 断开指定id的wifi * @author YOLANDA * @param paramInt WifiConfiguration.networkId */public void disconnectWifi(int paramInt) {this.mWifiManager.disableNetwork(paramInt);}/** * 是否存在某个网络信息 * @param str Wifi名称:WifiConfiguration.SSID 去掉两边的"\" * @return */private WifiConfiguration isExsits(String str) {Iterator<WifiConfiguration> localIterator = this.mWifiManager.getConfiguredNetworks().iterator();WifiConfiguration wifiConfiguration;do {if(!localIterator.hasNext()) {return null;}wifiConfiguration = localIterator.next();}while(!wifiConfiguration.SSID.equals("\"" + str + "\""));return wifiConfiguration;}/*=======================Wifi 热点========================*//** * 根据wifi信息创建或关闭一个热点  * @author YOLANDA * @param paramWifiConfiguration * @param paramBoolean */public void operationWifiAP(WifiConfiguration wifiConfiguration, Boolean isCreateOrClose) {try {Class<?> localClass = this.mWifiManager.getClass();Class<?>[] arrayOfClass = new Class[2];arrayOfClass[0] = WifiConfiguration.class;arrayOfClass[1] = Boolean.TYPE;Method localMethod = localClass.getMethod("setWifiApEnabled", arrayOfClass);WifiManager wifiManager = this.mWifiManager;Object[] arrayOfObject = new Object[2];arrayOfObject[0] = wifiConfiguration;arrayOfObject[1] = isCreateOrClose;localMethod.invoke(wifiManager, arrayOfObject);return;} catch (Exception e) {e.printStackTrace();}}/** * 获取热点名 * @author YOLANDA * @return */public String getApSSID() {try {Method localMethod = this.mWifiManager.getClass().getDeclaredMethod("getWifiApConfiguration", new Class[0]);if (localMethod == null) return null;Object localObject1 = localMethod.invoke(this.mWifiManager,new Object[0]);if (localObject1 == null) return null;WifiConfiguration localWifiConfiguration = (WifiConfiguration) localObject1;if (localWifiConfiguration.SSID != null) return localWifiConfiguration.SSID;Field localField1 = WifiConfiguration.class.getDeclaredField("mWifiApProfile");if (localField1 == null) return null;localField1.setAccessible(true);Object localObject2 = localField1.get(localWifiConfiguration);localField1.setAccessible(false);if (localObject2 == null)  return null;Field localField2 = localObject2.getClass().getDeclaredField("SSID");localField2.setAccessible(true);Object localObject3 = localField2.get(localObject2);if (localObject3 == null) return null;localField2.setAccessible(false);String str = (String) localObject3;return str;} catch (Exception localException) {}return null;}/** * 获取热点创建状态 * @author YOLANDA * @return */public int getWifiApState() {try {int i = ((Integer) this.mWifiManager.getClass().getMethod("getWifiApState", new Class[0]).invoke(this.mWifiManager, new Object[0])).intValue();return i;} catch (Exception localException) {}return 4;// 未知wifi网卡状态}/*=======================Current Wifi Info========================*//** * 获取当前已经连接wifi信息 * @author YOLANDA * @return */public WifiInfo getCurrentWifiInfo() {return this.mWifiManager.getConnectionInfo();} /** * 获取当前已经连接wifi MAC 地址 * @author YOLANDA * @return */public String getCurrentBSSID() {WifiInfo info = getCurrentWifiInfo();if(info != null){return info.getBSSID();}return null;}/** * 获取当前已经连接Wifi名称 * @author YOLANDA * @return */public String getCurrentWifiName() {WifiInfo info = getCurrentWifiInfo();if(info != null){String s = info.getSSID();//去掉开头和结尾的",留下中间的if (!TextUtils.isEmpty(s) && (s.length() > 2) && (s.charAt(0) == '"') && (s.charAt(s.length() - 1) == '"')) {return s.substring(1, s.length() - 1);}}return null;}/** * 获取当前已经连接网络在本机的id * @author YOLANDA * @return 没有则返回0 */public int getCurrentNetworkId() {WifiInfo info = getCurrentWifiInfo();if(info != null){return info.getNetworkId();}return 0;}/** * 本机物理(Mac)地址  * @author YOLANDA * @return */public String getMyMacAddress() {WifiInfo info = getCurrentWifiInfo();if(info != null){return info.getMacAddress();}return null;}/** * 转化为真正的IP * @author YOLANDA * @param ipAddress * @return */private String intToIp(int ipAddress)  {return ((ipAddress & 0xff) + "." + (ipAddress>>8 & 0xff) + "." +(ipAddress>>16 & 0xff) + "." + (ipAddress>>24 & 0xff));}/** * 获取当前本机ip地址 * @author YOLANDA * @return */public String getMyIPAddress() {WifiInfo info = getCurrentWifiInfo();if(info != null){return intToIp(info.getIpAddress());}return null;}/*=======================Outer Wifi Info List========================*//** * 开始搜索wifi * @author YOLANDA */public void startScan() {this.mWifiManager.startScan();}/** * 得到扫描到的网络列表 * @author YOLANDA * @return */public List<ScanResult> getWifiList() {List<ScanResult> scanResults = this.mWifiManager.getScanResults();return scanResults;}/** * 查看扫描结果 * @author YOLANDA * @return */public StringBuilder lookUpScan(List<ScanResult> scanResults) {StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < scanResults.size(); i++){stringBuilder.append("Index_" + Integer.valueOf(i + 1).toString() + ":"); //将ScanResult信息转换成一个字符串包  //其中把包括:BSSID、SSID、capabilities、frequency、levelstringBuilder.append((scanResults.get(i)).toString());stringBuilder.append("\n");}return stringBuilder;}/** * 拿到最后一次连接成功的路由器的地址 * @author YOLANDA * @return */public String getLastSucceedAddress() {DhcpInfo myDhcpInfo = mWifiManager.getDhcpInfo();if (myDhcpInfo == null) {return "255.255.255.255";}int broadcast = myDhcpInfo.ipAddress & myDhcpInfo.netmask | myDhcpInfo.netmask ^ 0xFFFFFFFF;byte[] quads = new byte[4];for (int k = 0; k < 4; k++) {quads[k] = ((byte) (broadcast >> k * 8 & 0xFF));}try {return InetAddress.getByAddress(quads).getHostAddress();} catch (Exception e) {return "255.255.255.255";}}}


更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. 读取android手机流量信息
  3. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  4. android 获取唯一标识
  5. android拍照与读取相册
  6. Android(安卓)热点开关状态的判断和获取热点ssid
  7. Android软键盘适配问题
  8. android用户界面-组件Widget-地图视图MapView
  9. AIR Native Extension的使用(Android)一 : 打包ane

随机推荐

  1. Android(安卓)进程间通信AIDL学习
  2. android actionbar+drawerLayout相关联
  3. Android(安卓)模拟器上的127.0.0.1 local
  4. android 手机内存SD卡和cpu等信息的获取
  5. Android模拟器无法上网问题
  6. Android(安卓)Okhttp3了解及封装类使用
  7. android原生widget 电量控制(PowerSave)设
  8. Android(安卓)NotePad的简单实现
  9. 向sd写文件时权限
  10. android INSTALL_FAILED_INSUFFICIENT_ST