WiFi打开、连接、关闭

/** * WiFi连接管理 * 申请权限 *  *  *  *  * 动态权限 * 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 getWifiList(){        List 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 configs = wifiManager.getConfiguredNetworks();        for (WifiConfiguration config : configs) {            if (config.SSID.equals("\""+ssid+"\"")) {                return config;            }        }        return null;    }}
                                                             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);            }        }    }}

更多相关文章

  1. Android 消息通知栏Notification使用和权限
  2. Android动态权限判断以及动态权限申请
  3. Android 访问权限许可大全
  4. android 模拟器获取root权限的方法
  5. Android登录页面制作并且记住账号密码
  6. Android 仿微信支付密码界面
  7. 修改Android系统目录的读写权限命令
  8. Android 6.0权限处理问题
  9. android 仿ios数字密码解锁界面

随机推荐

  1. Android(安卓)Gradle manifestPlaceholde
  2. android top 10 library1
  3. 如何在activity中控制屏幕点亮与关闭
  4. Android中http请求(C# MVC接收)
  5. Android如何使用WebView访问https的网站
  6. android零碎要点---android开发者的福音,5
  7. Android禁止横竖屏和解决切换屏幕时重启A
  8. android 每天定时提醒功能实现
  9. 从android游戏框架看其生命周期
  10. Android中Message机制的灵活应用(一)