wifi管理
import Android.content.context;
import android.net.WiFi.ScanResult;
import android.net.wifi.Wificonfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import java.lang.reflect.field;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;
/**
* WIFI管理类
* @author ZHF
*
*/
public class WifiAdmin {
private static WifiAdmin wifiAdmin = null;
private List<WifiConfiguration> mWifiConfiguration; //无线网络配置信息类集合(网络连接列表)
private List<ScanResult> mWifiList; //检测到接入点信息类 集合
//描述任何Wifi连接状态
private WifiInfo mWifiInfo;
WifiManager.WifiLock mWifilock; //能够阻止wifi进入睡眠状态,使wifi一直处于活跃状态
public WifiManager mWifiManager;
/**
* 获取该类的实例(懒汉)
* @param context
* @return
*/
public static WifiAdmin getinstance(Context context) {
if(wifiAdmin == null) {
wifiAdmin = new WifiAdmin(context);
}
return wifiAdmin;
}
private WifiAdmin(Context context) {
//获取系统Wifi服务 WIFI_SERVICE
this.mWifiManager = (WifiManager) context.getSystemService("wifi");
//获取连接信息
this.mWifiInfo = this.mWifiManager.getConnectionInfo();
}
/**
* 是否存在网络信息
* @param str 热点名称
* @return
*/
private WifiConfiguration isExsits(String str) {
Iterator localIterator = this.mWifiManager.getconfiguredNetworks().iterator();
WifiConfiguration localWifiConfiguration;
do {
if(!localIterator.hasNext()) return null;
localWifiConfiguration = (WifiConfiguration) localIterator.next();
}while(!localWifiConfiguration.SSID.equals("\"" + str + "\""));
return localWifiConfiguration;
}
/**锁定WifiLock,当下载大文件时需要锁定 **/
public void AcquireWifiLock() {
this.mWifilock.acquire();
}
/**创建一个WifiLock**/
public void CreateWifiLock() {
this.mWifilock = this.mWifiManager.createWifiLock("Test");
}
/**解锁WifiLock**/
public void ReleaseWifilock() {
if(mWifilock.isHeld()) { //判断时候锁定
mWifilock.acquire();
}
}
/**打开Wifi**/
public void OpenWifi() {
if(!this.mWifiManager.isWifiEnabled()){ //当前wifi不可用
this.mWifiManager.setWifiEnabled(true);
}
}
/**关闭Wifi**/
public void closeWifi() {
if(mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
/**端口指定id的wifi**/
public void disconnectWifi(int paramInt) {
this.mWifiManager.disableNetwork(paramInt);
}
/**添加指定网络**/
public void addNetwork(WifiConfiguration paramWifiConfiguration) {
int i = mWifiManager.addNetwork(paramWifiConfiguration);
mWifiManager.enableNetwork(i, true);
}
/**
* 连接指定配置好的网络
* @param index 配置好网络的ID
*/
public void connectConfiguration(int index) {
// 索引大于配置好的网络索引返回
if (index > mWifiConfiguration.size()) {
return;
}
//连接配置好的指定ID的网络
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);
}
/**
* 根据wifi信息创建或关闭一个热点
* @param paramWifiConfiguration
* @param paramBoolean 关闭标志
*/
public void createWifiAP(WifiConfiguration paramWifiConfiguration,boolean paramBoolean) {
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 localWifiManager = this.mWifiManager;
Object[] arrayOfObject = new Object[2];
arrayOfObject[0] = paramWifiConfiguration;
arrayOfObject[1] = Boolean.valueOf(paramBoolean);
localmethod.invoke(localWifiManager, arrayOfObject);
return;
} catch (Exception e) {
e.printstacktrace();
}
}
/**
* 创建一个wifi信息
* @param ssid 名称
* @param passawrd 密码
* @param paramInt 有3个参数,1是无密码,2是简单密码,3是wap加密
* @param type 是"ap"还是"wifi"
* @return
*/
public WifiConfiguration createWifiInfo(String ssid, String passawrd,int paramInt, String type) {
//配置网络信息类
WifiConfiguration localWifiConfiguration1 = new WifiConfiguration();
//设置配置网络属性
localWifiConfiguration1.allowedAuthAlgorithms.clear();
localWifiConfiguration1.allowedGroupCiphers.clear();
localWifiConfiguration1.allowedKeyManagement.clear();
localWifiConfiguration1.allowedPairwiseCiphers.clear();
localWifiConfiguration1.allowedProtocols.clear();
if(type.equals("wt")) { //wifi连接
localWifiConfiguration1.SSID = ("\"" + ssid + "\"");
WifiConfiguration localWifiConfiguration2 = isExsits(ssid);
if(localWifiConfiguration2 != null) {
mWifiManager.removeNetwork(localWifiConfiguration2.networkId); //从列表中删除指定的网络配置网络
}
if(paramInt == 1) { //没有密码
localWifiConfiguration1.wepKeys[0] = "";
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex = 0;
} else if(paramInt == 2) { //简单密码
localWifiConfiguration1.hiddenSSID = true;
localWifiConfiguration1.wepKeys[0] = ("\"" + passawrd + "\"");
} else { //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);
}
}else {//"ap" wifi热点
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;
if (paramInt == 1) { //没有密码
localWifiConfiguration1.wepKeys[0] = "";
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex = 0;
} else if (paramInt == 2) { //简单密码
localWifiConfiguration1.hiddenSSID = true;//网络上不广播ssid
localWifiConfiguration1.wepKeys[0] = passawrd;
} else if (paramInt == 3) {//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);
}
}
return localWifiConfiguration1;
}
/**获取热点名**/
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;
}
/**获取wifi名**/
public String getBSSID() {
if (this.mWifiInfo == null)
return "NULL";
return this.mWifiInfo.getBSSID();
}
/**得到配置好的网络 **/
public List<WifiConfiguration> getConfiguration() {
return this.mWifiConfiguration;
}
/**获取ip地址**/
public int getIpaddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
/**获取物理地址(Mac)**/
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
/**获取网络id**/
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
/**获取热点创建状态**/
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网卡状态
}
/**获取wifi连接信息**/
public WifiInfo getWifiInfo() {
return this.mWifiManager.getConnectionInfo();
}
/** 得到网络列表**/
public List<ScanResult> getWifiList() {
return this.mWifiList;
}
/**查看扫描结果**/
public stringbuilder lookUpScan() {
StringBuilder localStringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++)
{
localStringBuilder.append("Index_"+new Integer(i + 1).toString() + ":");
//将ScanResult信息转换成一个字符串包
//其中把包括:BSSID、SSID、capabilities、frequency、level
localStringBuilder.append((mWifiList.get(i)).toString());
localStringBuilder.append("\n");
}
return localStringBuilder;
}
/** 设置wifi搜索结果 **/
public void setWifiList() {
this.mWifiList = this.mWifiManager.getScanResults();
}
/**开始搜索wifi**/
public void startScan() {
this.mWifiManager.startScan();
}
/**得到接入点的BSSID**/
public String GetBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
}
文章最后发布于: 2017-11-12 17:30:34
相关阅读
个人觉得破解wifi密码最简单的, 就是用kali 下的reaver工具了。挂着一个晚上, 如果没有错误, 密码应出来了。当然, 你要先确定你的网
“360连我WiFi连接上但是上不了网”很多人都会问怎么办?作为一个手机流量每个月只有100M的小编来说,这简直就是噩梦。移
两行命令查看电脑wifi密码
刚刚踏入社会接受到的第一个重击居然来自于手机套餐,是我始料未及的。在支撑自己手机流量等相关套餐服务的同时,还要在房子里安装宽
wi-fi是一个非常便捷的上网工具,有了wi-fi手机也可以上网看电视,不需要流量,那无线路由与有线路由如何连接才能启用wi-fi呢?那么由