android代码设置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<ScanResult> getWifiList(){
     
            wifiManager.startScan();
            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;
        }
    }

转载于:https://www.it610.com/article/1304369833353187328.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 应用中连接 WiFi设置保存密码自动连接也是非常简单的。你可以使用 Android 提供的 WifiManager 类来完成这个任务。以下是一个示例代码,可以连接到指定的 WiFi设置自动连接: ```java WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); String ssid = "你要连接WiFi 名称"; String password = "你要连接WiFi 密码"; WifiConfiguration conf = new WifiConfiguration(); conf.SSID = "\"" + ssid + "\""; conf.preSharedKey = "\"" + password + "\""; conf.status = WifiConfiguration.Status.ENABLED; conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); int netId = wifiManager.addNetwork(conf); wifiManager.saveConfiguration(); wifiManager.disconnect(); wifiManager.enableNetwork(netId, true); wifiManager.reconnect(); ``` 在这个示例代码中,我们首先获取了 WifiManager 对象,然后设置了要连接WiFi 的名称和密码。接下来,我们创建了一个 WifiConfiguration 对象,并设置了它的 SSID、密码密码类型。然后我们调用 WifiManager.addNetwork() 方法将这个网络添加到 WiFi 配置列表中,并将其保存到设备中。最后,我们调用 WifiManager.enableNetwork() 方法连接到这个网络,并调用 WifiManager.reconnect() 方法重新连接WiFi。 需要注意的是,在 Android 6.0 及以上版本中,如果你想在应用程序中连接WiFi,你需要在 AndroidManifest.xml 中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> ``` 同时,你需要在运行时请求 ACCESS_FINE_LOCATION 权限,因为在 Android 6.0 及以上版本中,连接WiFi 的过程中需要获取设备的位置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值