Android 获取wifi状态 Wifi控制 主动连接wifi
2017-06-05 16:23
399 查看
1.获取wifi状态第一步肯定是要添加权限的,不然会闪退。
权限:<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
public static boolean isWiFiActive(Context context)
{
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//得到wifi管理器对象
return wifimanager.isWifiEnabled();//返回wifi状态
}
2.打开wifi,因为打开wifi是去改变Wifi的状态,所以打开wifi的权限和获取WiFi状态的权限是不一样的,也要记得加上去。
权限:<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
/**
* 打开或关闭wifi
*/
public static void isOpenWifi(Context context,boolean isOpen)
{
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//得到wifi管理器对象
wifimanager.setWifiEnabled(isOpen);
//打开或关闭
}
3.当我们知道wifi的账号和密码的时候,如何用代码去连接这个wifi。先上代码。
/**
* 添加并连接wifi
* @param context
* @param wifiname
* @param pwd
*/
public static void AddWifiConfig(Context context,String wifiname , String pwd) {//第二个参数是账号名称,也就是我们WiFi列表里所看到的名字
wifimanager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);//得到wifi管理器对象
int wifiId = -1;//自己定义的数值,判断用
WifiConfiguration wifiCong = new WifiConfiguration();//这个类是我们构造wifi对象使用的,具体可以百度
wifiCong.SSID = "\"" + wifiname + "\"";// \"转义字符,代表"//为成员变量赋值
wifiCong.preSharedKey = "\"" + pwd + "\"";// WPA-PSK密码
wifiCong.hiddenSSID = false;
wifiCong.status = WifiConfiguration.Status.ENABLED;
wifiId = wifimanager.addNetwork(wifiCong);// 将配置好的特定WIFI密码信息添加,添加完成后默认是不激活状态,成功返回ID,否则为-1
if ( wifiId!=-1 )
{
//添加成功
}else
{
//添加失败
}
boolean isConected = wifimanager.enableNetwork(wifiId, true); // 连接配置好的指定ID的网络 true连接成功
if ( isConected )
{
//连接成功
WifiInfo info = wifimanager.getConnectionInfo();
}else
{
//连接失败
}
}
这样需要连接的
4000
时候调用就可以了,只要wifi账号密码没出错就可以连接上。
3.获取周围的wifi,对比附近是否有自己所想要的wifi,有返回true,没有false
/**
* 获取附近的wifi,对比附近是否有这个wifi
* @param context
* @param wifname
*/
public static boolean getAroundWifi(Context context,String wifname)
{
List<ScanResult> wifilist = new ArrayList<ScanResult>();
wifilist.clear();
wifimanager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
List<ScanResult> list = wifimanager.getScanResults();
for (ScanResult scanResult : list) {//这一步是为了过滤重复的wifi,因为wifi扫描过程中会把同一个wifi添加多遍。
if (!TextUtils.isEmpty(scanResult.SSID) && !containName(wifilist,scanResult.SSID))
{
wifilist.add(scanResult);
}
}
list.clear();
for (ScanResult Result : wifilist) {
if(wifname.equals(Result.SSID))
{
return true;
}
}
return false;
}
/**
* 判断一个扫描结果中,是否包含了某个名称的WIFI
* @param sr
* 扫描结果
* @param name
* 要查询的名称
* @return 返回true表示包含了该名称的WIFI,返回false表示不包含
*/
public static boolean containName(List<ScanResult> sr, String name)
{
for (ScanResult result : sr)
{
if (result.SSID.equals(name))
return true;
}
return false;
}
权限:<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
public static boolean isWiFiActive(Context context)
{
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//得到wifi管理器对象
return wifimanager.isWifiEnabled();//返回wifi状态
}
2.打开wifi,因为打开wifi是去改变Wifi的状态,所以打开wifi的权限和获取WiFi状态的权限是不一样的,也要记得加上去。
权限:<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
/**
* 打开或关闭wifi
*/
public static void isOpenWifi(Context context,boolean isOpen)
{
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//得到wifi管理器对象
wifimanager.setWifiEnabled(isOpen);
//打开或关闭
}
3.当我们知道wifi的账号和密码的时候,如何用代码去连接这个wifi。先上代码。
/**
* 添加并连接wifi
* @param context
* @param wifiname
* @param pwd
*/
public static void AddWifiConfig(Context context,String wifiname , String pwd) {//第二个参数是账号名称,也就是我们WiFi列表里所看到的名字
wifimanager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);//得到wifi管理器对象
int wifiId = -1;//自己定义的数值,判断用
WifiConfiguration wifiCong = new WifiConfiguration();//这个类是我们构造wifi对象使用的,具体可以百度
wifiCong.SSID = "\"" + wifiname + "\"";// \"转义字符,代表"//为成员变量赋值
wifiCong.preSharedKey = "\"" + pwd + "\"";// WPA-PSK密码
wifiCong.hiddenSSID = false;
wifiCong.status = WifiConfiguration.Status.ENABLED;
wifiId = wifimanager.addNetwork(wifiCong);// 将配置好的特定WIFI密码信息添加,添加完成后默认是不激活状态,成功返回ID,否则为-1
if ( wifiId!=-1 )
{
//添加成功
}else
{
//添加失败
}
boolean isConected = wifimanager.enableNetwork(wifiId, true); // 连接配置好的指定ID的网络 true连接成功
if ( isConected )
{
//连接成功
WifiInfo info = wifimanager.getConnectionInfo();
}else
{
//连接失败
}
}
这样需要连接的
4000
时候调用就可以了,只要wifi账号密码没出错就可以连接上。
3.获取周围的wifi,对比附近是否有自己所想要的wifi,有返回true,没有false
/**
* 获取附近的wifi,对比附近是否有这个wifi
* @param context
* @param wifname
*/
public static boolean getAroundWifi(Context context,String wifname)
{
List<ScanResult> wifilist = new ArrayList<ScanResult>();
wifilist.clear();
wifimanager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
List<ScanResult> list = wifimanager.getScanResults();
for (ScanResult scanResult : list) {//这一步是为了过滤重复的wifi,因为wifi扫描过程中会把同一个wifi添加多遍。
if (!TextUtils.isEmpty(scanResult.SSID) && !containName(wifilist,scanResult.SSID))
{
wifilist.add(scanResult);
}
}
list.clear();
for (ScanResult Result : wifilist) {
if(wifname.equals(Result.SSID))
{
return true;
}
}
return false;
}
/**
* 判断一个扫描结果中,是否包含了某个名称的WIFI
* @param sr
* 扫描结果
* @param name
* 要查询的名称
* @return 返回true表示包含了该名称的WIFI,返回false表示不包含
*/
public static boolean containName(List<ScanResult> sr, String name)
{
for (ScanResult result : sr)
{
if (result.SSID.equals(name))
return true;
}
return false;
}
相关文章推荐
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android获取当前的网络连接信息和网络链接状态 GPRS 和 WiFi网络
- android wifi连接打印机并获取打印机状态
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- android 获取wifi开光状态,连接状态,信号强度
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android如何获取网络连接状态(3G/Wifi)及怎样调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- android wifi连接打印机并获取打印机状态
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android获取网络连接状态(3G/Wifi)及调用网络配置界面
- 获取android设备wifi连接状态
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面