native.js 安卓自动连接制定名称和密码的wifi
来源:互联网 发布:唱给自己的歌网络战队 编辑:程序博客网 时间:2024/06/05 09:46
(function($, doc) {
$.init({
//通知栏的颜色
statusBarBackground: '#f7f7f7'
});
$.plusReady(function() {
document.getElementById("test_button").addEventListener("tap", function() {
function judgePlatform() {
switch(plus.os.name) {
case "Android":
// Android平台: plus.android.*
androidOpenWifi(); //通常需要3~5秒
loadWifiInfo();
break;
case "iOS":
// iOS平台: plus.ios.*
break;
default:
// 其它平台
break;
}
}
});
//监听每一个ul下的li事件
mui(".mui-table-view").on('tap', '.mui-table-view-cell', function() {
var ssid = this.firstChild.innerHTML;
console.log("获取到的SSID:" + ssid);
function judgePlatform() {
switch(plus.os.name) {
case "Android":
// Android平台: plus.android.*
androidWifiConnection("FGJSB", "fuguangjsb14", "wpa"); //
break;
case "iOS":
// iOS平台: plus.ios.*
break;
default:
// 其它平台
break;
}
}
});
});
}(mui, document));
/**
* 获取安卓的wifi列表
*/
function loadWifiInfo() {
// 主窗体
var MainActivity = plus.android.runtimeMainActivity()
// 上下文
var Context = plus.android.importClass('android.content.Context')
// 导入WIFI管理 和 WIFI 信息 的class
plus.android.importClass("android.net.wifi.WifiManager")
plus.android.importClass("android.net.wifi.WifiInfo")
plus.android.importClass("android.net.wifi.ScanResult")
plus.android.importClass("java.util.ArrayList")
// 获取 WIFI 管理实例
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE)
// 获取当前连接WIFI的信息
var info = wifiManager.getConnectionInfo();
console.log("当前连接的wifi的信息是:" + info);
// 获取当前 WIFI 连接的 SSID (WIFI 名称)
//var ssid = info.getSSID()
// 这里的 获取到的名称 是 带 双引号的 如 "cmcc"
// 所以我们这里处理一下
//ssid = ssid.replace(/(^\"*)|(\"*$)/g, "")
var resultList = wifiManager.getScanResults();
var list = "";
var ul = document.getElementById("wifiList");
for(var i = 0; i < resultList.size(); i++) {
var sSID = resultList.get(i).plusGetAttribute('SSID')
if(sSID != "") {
list += '<li class="mui-table-view-cell"><p>' + sSID + '</p></li>';
}
}
ul.innerHTML = list;
}
/**
* 打开安卓的wifi模块
*/
function androidOpenWifi() {
var bRet = false;
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")
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE)
if(!wifiManager.isWifiEnabled()) {
bRet = wifiManager.setWifiEnabled(true); //返回自动打开的结果
console.log("打开wifi的返回结果是" + bRet)
} else {
bRet = true;
console.log("wifi原本已经打开")
}
return bRet;
}
/**
* 安卓自动连接wifi,根据制定的ssid
* @param {Object} ssid 名称
* @param {Object} password 密码
* @param {Object} type 加密方式
*/
function androidWifiConnection(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);
//
if(wifiConfig == null) {
console.log("wifiConfig is null!")
return;
}
//WifiConfiguration
var WifiConfiguration = tempConfig = isExsitsAndroid(ssid);
if(tempConfig != null) {
console.log("删除原来连接的wifi" + tempConfig);
wifiManager.removeNetwork(tempConfig.plusGetAttribute('networkId'));
}
//int
console.log("要连接的新的wifi配置:" + wifiConfig)
var netID = wifiManager.addNetwork(wifiConfig);
console.log(netID);
//boolean
var enabled = wifiManager.enableNetwork(netID, true);
console.log("enableNetwork status enable=" + enabled)
// boolean
var connected = wifiManager.reconnect();
console.log("enableNetwork connected=" + connected)
}
/**
* 查看以前是否也配置过这个网络
*/
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");
var List = plus.android.importClass("java.util.List");
var ArrayList = plus.android.importClass("java.util.ArrayList");
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);
//
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);
return existingConfigs.get(i);
}
}
}
console.log("该ssid没有配置过")
return null;
}
/**
* 创建wifi配置对象
* @param {Object} SSID
* @param {Object} Password
* @param {Object} Type
*/
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 + "\"");
// nopass
if(Type == "nopass") {
config.plusSetAttribute(wepKeys[0], "");
config.plusGetAttribute('allowedKeyManagement').set(WifiConfiguration.KeyMgmt.NONE);
config.plusSetAttribute('wepTxKeyIndex', 0);
}
// wep
if(Type == "wep") {
if(!Password != "") {
if(isHexWepKey(Password)) {
config.plusSetAttribute(wepKeys[0], Password);
} else {
config.plusSetAttribute(wepKeys[0], "\"" + Password + "\"");
}
}
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
config.allowedKeyManagement.set(KeyMgmt.NONE);
config.plusSetAttribute('wepTxKeyIndex', 0);
}
// wpa
if(Type == "wpa") {
config.plusSetAttribute('preSharedKey', "\"" + Password + "\"");
config.plusSetAttribute('hiddenSSID', true);
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('allowedProtocols').set(WifiConfiguration.Protocol.WPA);
config.plusGetAttribute('allowedGroupCiphers').set(WifiConfiguration.GroupCipher.CCMP);
config.plusGetAttribute('allowedPairwiseCiphers').set(WifiConfiguration.PairwiseCipher.CCMP);
config.plusSetAttribute('status', WifiConfiguration.Status.ENABLED);
}
return config;
}
//-------------------------ios代码
$.init({
//通知栏的颜色
statusBarBackground: '#f7f7f7'
});
$.plusReady(function() {
document.getElementById("test_button").addEventListener("tap", function() {
function judgePlatform() {
switch(plus.os.name) {
case "Android":
// Android平台: plus.android.*
androidOpenWifi(); //通常需要3~5秒
loadWifiInfo();
break;
case "iOS":
// iOS平台: plus.ios.*
break;
default:
// 其它平台
break;
}
}
});
//监听每一个ul下的li事件
mui(".mui-table-view").on('tap', '.mui-table-view-cell', function() {
var ssid = this.firstChild.innerHTML;
console.log("获取到的SSID:" + ssid);
function judgePlatform() {
switch(plus.os.name) {
case "Android":
// Android平台: plus.android.*
androidWifiConnection("FGJSB", "fuguangjsb14", "wpa"); //
break;
case "iOS":
// iOS平台: plus.ios.*
break;
default:
// 其它平台
break;
}
}
});
});
}(mui, document));
/**
* 获取安卓的wifi列表
*/
function loadWifiInfo() {
// 主窗体
var MainActivity = plus.android.runtimeMainActivity()
// 上下文
var Context = plus.android.importClass('android.content.Context')
// 导入WIFI管理 和 WIFI 信息 的class
plus.android.importClass("android.net.wifi.WifiManager")
plus.android.importClass("android.net.wifi.WifiInfo")
plus.android.importClass("android.net.wifi.ScanResult")
plus.android.importClass("java.util.ArrayList")
// 获取 WIFI 管理实例
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE)
// 获取当前连接WIFI的信息
var info = wifiManager.getConnectionInfo();
console.log("当前连接的wifi的信息是:" + info);
// 获取当前 WIFI 连接的 SSID (WIFI 名称)
//var ssid = info.getSSID()
// 这里的 获取到的名称 是 带 双引号的 如 "cmcc"
// 所以我们这里处理一下
//ssid = ssid.replace(/(^\"*)|(\"*$)/g, "")
var resultList = wifiManager.getScanResults();
var list = "";
var ul = document.getElementById("wifiList");
for(var i = 0; i < resultList.size(); i++) {
var sSID = resultList.get(i).plusGetAttribute('SSID')
if(sSID != "") {
list += '<li class="mui-table-view-cell"><p>' + sSID + '</p></li>';
}
}
ul.innerHTML = list;
}
/**
* 打开安卓的wifi模块
*/
function androidOpenWifi() {
var bRet = false;
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")
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE)
if(!wifiManager.isWifiEnabled()) {
bRet = wifiManager.setWifiEnabled(true); //返回自动打开的结果
console.log("打开wifi的返回结果是" + bRet)
} else {
bRet = true;
console.log("wifi原本已经打开")
}
return bRet;
}
/**
* 安卓自动连接wifi,根据制定的ssid
* @param {Object} ssid 名称
* @param {Object} password 密码
* @param {Object} type 加密方式
*/
function androidWifiConnection(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);
//
if(wifiConfig == null) {
console.log("wifiConfig is null!")
return;
}
//WifiConfiguration
var WifiConfiguration = tempConfig = isExsitsAndroid(ssid);
if(tempConfig != null) {
console.log("删除原来连接的wifi" + tempConfig);
wifiManager.removeNetwork(tempConfig.plusGetAttribute('networkId'));
}
//int
console.log("要连接的新的wifi配置:" + wifiConfig)
var netID = wifiManager.addNetwork(wifiConfig);
console.log(netID);
//boolean
var enabled = wifiManager.enableNetwork(netID, true);
console.log("enableNetwork status enable=" + enabled)
// boolean
var connected = wifiManager.reconnect();
console.log("enableNetwork connected=" + connected)
}
/**
* 查看以前是否也配置过这个网络
*/
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");
var List = plus.android.importClass("java.util.List");
var ArrayList = plus.android.importClass("java.util.ArrayList");
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);
//
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);
return existingConfigs.get(i);
}
}
}
console.log("该ssid没有配置过")
return null;
}
/**
* 创建wifi配置对象
* @param {Object} SSID
* @param {Object} Password
* @param {Object} Type
*/
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 + "\"");
// nopass
if(Type == "nopass") {
config.plusSetAttribute(wepKeys[0], "");
config.plusGetAttribute('allowedKeyManagement').set(WifiConfiguration.KeyMgmt.NONE);
config.plusSetAttribute('wepTxKeyIndex', 0);
}
// wep
if(Type == "wep") {
if(!Password != "") {
if(isHexWepKey(Password)) {
config.plusSetAttribute(wepKeys[0], Password);
} else {
config.plusSetAttribute(wepKeys[0], "\"" + Password + "\"");
}
}
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
config.allowedKeyManagement.set(KeyMgmt.NONE);
config.plusSetAttribute('wepTxKeyIndex', 0);
}
// wpa
if(Type == "wpa") {
config.plusSetAttribute('preSharedKey', "\"" + Password + "\"");
config.plusSetAttribute('hiddenSSID', true);
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('allowedProtocols').set(WifiConfiguration.Protocol.WPA);
config.plusGetAttribute('allowedGroupCiphers').set(WifiConfiguration.GroupCipher.CCMP);
config.plusGetAttribute('allowedPairwiseCiphers').set(WifiConfiguration.PairwiseCipher.CCMP);
config.plusSetAttribute('status', WifiConfiguration.Status.ENABLED);
}
return config;
}
//-------------------------ios代码
阅读全文
0 0
- native.js 安卓自动连接制定名称和密码的wifi
- Android6.0通过WiFi名称密码连接WiFi的方案
- 安卓手机如何查看已连接的WIFI密码
- 安卓手机查看已经连接的WIFI密码
- 使用CMD查看连接过的WIFI名称和密码(最好用笔记本)
- QT---Native Wifi functions 应用(WiFi有密码连接)
- Native Wifi functions 应用(WiFi有密码连接)
- 编写安卓app程序自动连接指定wifi
- 安卓记住密码和自动登录
- 安卓记住密码和自动登录
- 安卓enableNetwork连接不上指定wifi或连接wifi后断开,连接到其他wifi的原因和解决方法
- 安卓教程:查看已保存的WIFI密码
- Android获取当前连接的wifi名称
- Android获取当前连接的wifi名称
- Android获取当前连接的wifi名称
- android 获取连接WiFi的名称
- 安卓 native 和 H5 的交互
- android wifi direct代码开启和设置名称密码的权限
- Python小练习
- jQuery选择器总结
- iptables --algo 字符串匹配算法 bm kmp
- iOS 对象数组的深拷贝(NSCoding协议)
- Cows(凸包面积)
- native.js 安卓自动连接制定名称和密码的wifi
- hihocoder-1526 序列的值(DP/二进制)
- 学习JPA
- 检查网络是否连接的工具类
- 将unsigned char字符串以16进制的字符串显示
- 122. Best Time to Buy and Sell Stock II
- 【openjudge】单词接龙
- Java基础(一)变量与运算
- Javascript设计模式-05-外观模式