安卓wifi管理 获取wifi 连接wifi 关闭wifi等。直接上代码
import java.util.ArrayList;
import java.util.List;
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 android.net.wifi.WifiManager.WifiLock;
import android.widget.Toast;
import io.flutter.Log;
public class WifiUtil {
private static WifiUtil utils =null;
public WifiUtil(Context context){
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
public static WifiUtil instance(Context context){
if (utils ==null){
synchronized (WifiUtil.class){
if (utils ==null){
utils =new WifiUtil(context);
}
}
}
return utils;
}
private WifiManager wifiManager;
/**
* wifi是否打开
* @return
*/
public boolean isWifiEnable(){
boolean isEnable =false;
if (wifiManager !=null){
if (wifiManager.isWifiEnabled()){
isEnable =true;
}
}
return isEnable;
}
/**
* 打开WiFi
*/
public void openWifi(){
if (wifiManager !=null && !isWifiEnable()){
wifiManager.setWifiEnabled(true);
}
}
/**
* 关闭WiFi
*/
public void closeWifi(){
if (wifiManager !=null && isWifiEnable()){
wifiManager.setWifiEnabled(false);
}
}
/**
* 获取WiFi列表
* @return
*/
public ListgetWifiList(){
ListresultList =new ArrayList<>();
if (wifiManager !=null && isWifiEnable()){
resultList.addAll(wifiManager.getScanResults());
}
return resultList;
}
/**
* 有密码连接
* @param ssid
* @param pws
*/
public boolean connectWifi(String ssid,String pwd){
Log.e("connectWifi", ssid);
Log.e("connectWifi", pwd);
if (pwd.length() >0)
{
return connectWifiPws(ssid,pwd);
}
else
return connectWifiNoPws(ssid);
}
/**
* 有密码连接
* @param ssid
* @param pws
*/
public boolean connectWifiPws(String ssid,String pwd){
wifiManager.disableNetwork(wifiManager.getConnectionInfo().getNetworkId());
int netId =wifiManager.addNetwork(getWifiConfig(ssid, pwd,true));
Log.e("connectWifiPws",netId+"true");
boolean connect =wifiManager.enableNetwork(netId,true);
return connect;
}
/**
* 无密码连接
* @param ssid
*/
public boolean connectWifiNoPws(String ssid){
Log.d("wifi","wifi SSID is = "+ssid);
wifiManager.disableNetwork(wifiManager.getConnectionInfo().getNetworkId());
int netId =wifiManager.addNetwork(getWifiConfig(ssid,"",false));
boolean connect =wifiManager.enableNetwork(netId,true);
return connect;
}
/**
* wifi设置
* @param ssid
* @param pws
* @param isHasPws
*/
private WifiConfiguration getWifiConfig(String ssid,String pws,boolean isHasPws){
WifiConfiguration config =new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID ="\"" + ssid +"\"";
WifiConfiguration tempConfig = isExist(ssid);
if(tempConfig !=null) {
wifiManager.removeNetwork(tempConfig.networkId);
}
if (isHasPws){
config.preSharedKey ="\""+pws+"\"";
config.hiddenSSID =false;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status =WifiConfiguration.Status.ENABLED;
}else {
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.preSharedKey =null;
config.wepKeys[0] ="\"" +"\"";
config.wepTxKeyIndex =0;
}
return config;
}
/**
* 得到配置好的网络连接
* @param ssid
* @return
*/
private WifiConfiguration isExist(String ssid) {
Listconfigs =wifiManager.getConfiguredNetworks();
for (WifiConfiguration config :configs) {
if (config.SSID.equals("\""+ssid+"\"")) {
return config;
}
}
return null;
}
}
注意权限:
/**
* WiFi连接管理
* 申请权限
* <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>* 动态权限
* Manifest.permission.ACCESS_COARSE_LOCATION
* Manifest.permission.ACCESS_FINE_LOCATION
*
*/