android WIFI连接,解决6.0及以上无法连接问题

编程入门 行业动态 更新时间:2024-10-10 03:32:35

1:首先第一要提到的就是6.0权限这方面得问题,众所周知 ,这里我就不说了,需要注意;
2:这里只说简单得连接wifi,如果需要其他功能得话,那么请看这篇文章:https://www.jianshu/p/572ac573e4b8
简书上的文章真的很好,所以请大家在简书上发表文章要负责任。

下面就是代码了,代码只有连接得方面

WifiConnect wifiConnect = new WifiConnect(this);
// 这两个参数 WIFI_SSID 和 WIFI_PASS 直接写要连接得名字和密码;
wifiConnect.addNetWork(WIFI_SSID, WIFI_PASS);   // 这里就是连接;
// ssid的格式我在代码里已经写进去了,所以直接写名字就好了;

下面是 WifiConnect 的这个类;

public class WifiConnect {
    private WifiManager mWifiManager;
    private List<WifiConfiguration> wifiConfigurationList;
    private Context mContext;


    public WifiConnect() {
    }

    public WifiConnect(Context context) {
        //  常驻
        mWifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    }

    public WifiConnect(List<WifiConfiguration> wifiConfigurationList, WifiManager mWifiManager) {
        this.wifiConfigurationList = wifiConfigurationList;
        this.mWifiManager = mWifiManager;
    }


    /**
     * 连接wifi
     */
    public void addNetWork(String SSID, String PASSW) {
        int netId = -1;
        if (removeWifi(SSID)) {
            Log.e("sin", "移除,新建config");
            netId = mWifiManager.addNetwork(createWifiInfo(SSID, PASSW));
        } else {
            if (getExitsWifiConfig(SSID) != null) {
                Log.e("sin", "这个wifi是连接过");
                netId = getExitsWifiConfig(SSID)workId;
            } else {
                Log.e("sin", "没连接过的,新建一个wifi配置 ");
                netId = mWifiManager.addNetwork(createWifiInfo(SSID, PASSW));
            }
        }

        Log.e("sin", "netId: " + netId);


        boolean b = mWifiManager.enableNetwork(netId, true);  //  无论咋这都会返回true;
        Log.e("sin", "ssss: " + b);
        if (!b) {
            Log.e("SSSSSSSSSSSS", "-0.0-");
            //  如果这里失败,再从新获取manager  重新配置config;
            mWifiManager = (WifiManager) mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            // 配置config

        } else {
            Log.e("SIN", "success");
        }


    }

    /**
     * 存在过的wifiConfiguration
     */
    public WifiConfiguration getExitsWifiConfig(String SSID) {
        wifiConfigurationList = mWifiManager.getConfiguredNetworks();
        for (WifiConfiguration wifiConfiguration : wifiConfigurationList) {
            if (wifiConfiguration.SSID.equals("\"" + SSID + "\"")) {
                return wifiConfiguration;
            }
        }
        return null;
    }


    public boolean removeWifi(int netId) {
        //
        return mWifiManager.removeNetwork(netId);
    }

    /**
     * config里存在; 在mWifiManager移除;
     */
    public boolean removeWifi(String SSID) {
        if (getExitsWifiConfig(SSID) != null) {
            return removeWifi(getExitsWifiConfig(SSID)workId);
        } else {
            return false;
        }
    }


    /**
     * CHUANJian
     *
     * @param SSID
     * @param password
     * @return
     */
    public WifiConfiguration createWifiInfo(String SSID, String password) {
        WifiConfiguration config = new WifiConfiguration();

        if (config != null) {
            config.allowedAuthAlgorithms.clear();
            config.allowedGroupCiphers.clear();
            config.allowedKeyManagement.clear();
            config.allowedPairwiseCiphers.clear();
            config.allowedProtocols.clear();
            config.SSID = "\"" + SSID + "\"";

            //如果有相同配置的,就先删除
            WifiConfiguration tempConfig = getExitsWifiConfig(SSID);
            if (tempConfig != null) {
                mWifiManager.removeNetwork(tempConfigworkId);
                mWifiManager.saveConfiguration();
            }
            config.preSharedKey = "\"" + password + "\"";
            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.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            config.status = WifiConfiguration.Status.ENABLED;

            Log.e("sin", "config: " + config.SSID + "      config: " + config.toString());
            return config;
        } else {

            Log.e("SSS", "WOCAO   NULL  !!!");
            return null;
        }

    }
}



这里就可以了。

更多推荐

android WIFI连接,解决6.0及以上无法连接问题

本文发布于:2023-06-13 17:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1386287.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:android   WIFI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!