现在跳转到新页面中,需要在新页面初始化时就把传进来的参数获得。这里可以使用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();