安卓wifi管理

安卓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

*

*/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容