概述
WiFi打开、连接、关闭
/**
* 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
*
*/
public class WifiUtils {
private static WifiUtils utils = null;
public WifiUtils(Context context){
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
public static WifiUtils getInstance(Context context){
if (utils == null){
synchronized (WifiUtils.class){
if (utils == null){
utils = new WifiUtils(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 List<ScanResult> getWifiList(){
List<ScanResult> resultList = new ArrayList<>();
if (wifiManager != null && isWifiEnable()){
resultList.addAll(wifiManager.getScanResults());
}
return resultList;
}
/**
* 有密码连接
* @param ssid
* @param pws
*/
public void connectWifiPws(String ssid, String pws){
wifiManager.disableNetwork(wifiManager.getConnectionInfo().getNetworkId());
int netId = wifiManager.addNetwork(getWifiConfig(ssid, pws, true));
wifiManager.enableNetwork(netId, true);
}
/**
* 无密码连接
* @param ssid
*/
public void connectWifiNoPws(String ssid){
wifiManager.disableNetwork(wifiManager.getConnectionInfo().getNetworkId());
int netId = wifiManager.addNetwork(getWifiConfig(ssid, "", false));
wifiManager.enableNetwork(netId, true);
}
/**
* 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 = true;
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);
}
return config;
}
/**
* 得到配置好的网络连接
* @param ssid
* @return
*/
private WifiConfiguration isExist(String ssid) {
List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();
for (WifiConfiguration config : configs) {
if (config.SSID.equals("""+ssid+""")) {
return config;
}
}
return null;
}
}
<receiver android:name=".MyBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.CONFIGURATION_CHANGED"/>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null
&& WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())){
Log.e("======", "NETWORK_STATE_CHANGED_ACTION");
Parcelable parcelable = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (parcelable != null){
NetworkInfo networkInfo = (NetworkInfo) parcelable;
NetworkInfo.State state = networkInfo.getState();
boolean isConnect = state == NetworkInfo.State.CONNECTED;
Log.e("======", "isConnect=" + isConnect);
}
}
}
}
最后
以上就是怕孤单导师为你收集整理的Android连接WiFi的全部内容,希望文章能够帮你解决Android连接WiFi所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复