Dcloud开发引用第三方sdk的app小程序扫盲---连接wifi

现在跳转到新页面中,需要在新页面初始化时就把传进来的参数获得。这里可以使用mui.plusready()来获取

mui.plusReady(function() {
				var self = plus.webview.currentWebview();
				document.getElementById("wifiname").value = self.wifiname;
				
				
			})
当连接wifi的时候 点击按钮开始联网。

连接wifi的时候一般传递ssid和password就行了,但有时候也要传递网络的加密方式type。我这里没有传type,而是在一个设置wifi信息的方法中设置wifi的加密方式为wpa(大部分wifi的加密方式都是wpa)。

function ConnectAndroidWifi(ssid,password,type){
	var MainActivity=plus.android.runtimeMainActivity();
	var Context=plus.android.importClass("android.content.Context");
	plus.android.importClass("android.net.wifi.WifiManager");
	plus.android.importClass("android.net.wifi.WifiInfo");
	plus.android.importClass("android.net.wifi.WifiConfiguration");
	var wifiManager=MainActivity.getSystemService(Context.WIFI_SERVICE);
	//WifiConfiguration
	var wifiConfig=androidCreateWifiInfo(ssid,password,type);
	
	
        .....
}

这里我调用了AndroidCreateWifiInfo()方法来创建wifi信息

function androidCreateWifiInfo(SSID, Password, Type) {
    plus.android.importClass("java.util.BitSet");
    var WifiConfiguration = plus.android.importClass("android.net.wifi.WifiConfiguration");
    var config = new WifiConfiguration();
        config.plusGetAttribute('allowedAuthAlgorithms').clear();
        config.plusGetAttribute('allowedGroupCiphers').clear();
        config.plusGetAttribute('allowedKeyManagement').clear();
        config.plusGetAttribute('allowedPairwiseCiphers').clear();
        config.plusGetAttribute('allowedProtocols').clear();
        config.plusSetAttribute('SSID', "\"" + SSID + "\"");
        config.plusGetAttribute('allowedAuthAlgorithms').set(WifiConfiguration.AuthAlgorithm.OPEN);
	config.plusGetAttribute('allowedGroupCiphers').set(WifiConfiguration.GroupCipher.TKIP);
	config.plusGetAttribute('allowedKeyManagement').set(WifiConfiguration.KeyMgmt.WPA_PSK);
	config.plusGetAttribute('allowedPairwiseCiphers').set(WifiConfiguration.PairwiseCipher.TKIP);
	config.plusGetAttribute('allowedGroupCiphers').set(WifiConfiguration.GroupCipher.CCMP);
	config.plusGetAttribute('allowedPairwiseCiphers').set(WifiConfiguration.PairwiseCipher.CCMP);

	config.plusSetAttribute('status', WifiConfiguration.Status.ENABLED);
	config.plusSetAttribute('preSharedKey', '"' + Password + '"');
	config.plusSetAttribute('hiddenSSID', true);
    return config;
}
看到这里实际上我type参数根本就没用,这里我偷懒了没有去掉。

那么 回到连接wifi的主方法,我们还需要做一步就是判断一下这个网络配置有没有存储在手机中。

var flag=isExsitsAndroid(ssid);

判断是否存在改配置的实现代码:

/**
 * 查看以前是否也配置过这个网络
 */
function isExsitsAndroid(sSID) {
    console.log("查看以前是否也配置过这个网络" + sSID);
    //WifiConfiguration
    var MainActivity = plus.android.runtimeMainActivity();
    var Context = plus.android.importClass('android.content.Context');
    plus.android.importClass("android.net.wifi.WifiManager");
    plus.android.importClass("android.net.wifi.WifiInfo");
    plus.android.importClass("android.net.wifi.WifiConfiguration")
    var List = plus.android.importClass("java.util.List");
    var ArrayList = plus.android.importClass("java.util.ArrayList");
    var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);//这就是获得wifimanager
    
    var existingConfigs = new ArrayList();
    // 获取网络连接的状态
    existingConfigs = wifiManager.getConfiguredNetworks();
    if(existingConfigs.size() != 0) {
        for(var i = 0; i < existingConfigs.size(); i++) {
        	
            if(existingConfigs.get(i).plusGetAttribute('SSID') == ("\"" + sSID + "\"")) {
                console.log("该制定的ssid存在于配置中:" + sSID);
                
                if(existingConfigs.get(i)!=null){
                	wifiManager.removeNetwork(existingConfigs.get(i).plusGetAttribute('networkId'));
                }
                return true;
            }
        }
    }
    console.log("该ssid没有配置过")
    return null;
}
这里实际上是将手机中存储的config直接删除。

最后连接wifi   可以用reconnect()或者reassociate()方法

var connected=wifiManager.reconnect();






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值