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);//WifiConfigurationvar 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);//WifiConfigurationvar 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);//这就是获得wifimanagervar 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();
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
