JavaShuo
欄目
標籤
WifiManager自動鏈接wifi接入點
時間 2019-11-18
標籤
wifimanager
自動
鏈接
wifi
欄目
無線
简体版
原文
原文鏈接
[java]
view plain
copy
<EMBED id=ZeroClipboardMovie_1 height=18 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=1&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">
/**
*
* wifi管理類
*
*
*/
public
class
WifiOperator
{
/**
* wifiManager
*/
private
WifiManager wm;
/**
* 上下文
*/
private
Context mContext;
/**
* 數據庫配置信息
*/
private
NetworkConfigDbHelper configDBHelper;
/**
* <默認構造函數>
* @param context 上下文
*/
public
WifiOperator(Context context)
{
mContext = context;
wm = (WifiManager)mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
configDBHelper =
new
NetworkConfigDbHelper(context);
}
/**
* 切換網絡
* @param type 網絡類型(1爲中心網絡 2 爲車載網絡)
* @return 結果碼 -1-本地設置爲空;0-鏈接成功;1-已經爲當前鏈接
* @see [類、類#方法、類#成員]
*/
public
int
access2Wifi(String type)
{
// 獲取本地的網絡配置信息
NetworkConfigBean setting = configDBHelper.getNetworkConfigBySettingType(type).get(type);
if
(setting ==
null
)
{
// 本地設置爲空
return
-
1
;
}
// 無線未打開時,開啓無線
if
(!wm.isWifiEnabled() && WifiManager.WIFI_STATE_ENABLING != wm.getWifiState())
{
wm.setWifiEnabled(
true
);
}
// 獲取本地的配置信息
String sSSID =
"\""
+ setting.getSsid() +
"\""
;
String sKey =
"\""
+ setting.getPassword() +
"\""
;
int
encryptionType = getKeyMgmtType(setting.getEncryptionType());
List<WifiConfiguration> configurations = wm.getConfiguredNetworks();
WifiConfiguration config =
null
;
boolean
isExisted =
false
;
int
networkId = -
1
;
for
(
int
i = configurations.size() -
1
; i >=
0
; i--)
{
config = configurations.get(i);
if
(config.SSID.equals(sSSID))
{
networkId = config.networkId;
isExisted =
true
;
break
;
}
}
if
(!isExisted)
{
// 安全類型 無、WEP(128)、WPA(TKIP)、WPA2(AES)
config =
new
WifiConfiguration();
// 名稱
config.SSID = sSSID;
config.allowedKeyManagement.set(encryptionType);
if
(encryptionType !=
0
)
{
// 密碼
config.preSharedKey = sKey;
}
config.hiddenSSID =
false
;
config.priority =
30
;
config.status = WifiConfiguration.Status.ENABLED;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.NONE);
config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
// 必須添加,不然無線路由沒法鏈接
config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
networkId = wm.addNetwork(config);
if
(networkId != -
1
)
{
wm.saveConfiguration();
}
}
else
{
// 獲取當前的wifi鏈接
WifiInfo curConnection = wm.getConnectionInfo();
if
(curConnection !=
null
&& sSSID.equals(curConnection.getSSID()))
{
// 已是當前鏈接
return
1
;
}
config.allowedKeyManagement.set(encryptionType);
if
(encryptionType !=
0
)
{
// 密碼
config.preSharedKey = sKey;
}
wm.updateNetwork(config);
}
if
(networkId != -
1
)
{
wm.disconnect();
wm.enableNetwork(networkId,
true
);
}
return
0
;
}
/**
* 獲取加密類型
* @param type 加密類型
* @return 加密類型
* @see [類、類#方法、類#成員]
*/
private
int
getKeyMgmtType(String type)
{
if
(type ==
null
)
{
return
WifiConfiguration.KeyMgmt.NONE;
}
if
(
"WEP"
.equals(type))
{
return
WifiConfiguration.KeyMgmt.IEEE8021X;
}
else
if
(
"WPA-PSK"
.equals(type))
{
return
WifiConfiguration.KeyMgmt.WPA_PSK;
}
else
if
(
"WPA2-PSK"
.equals(type))
{
return
WifiConfiguration.KeyMgmt.WPA_PSK;
}
return
WifiConfiguration.KeyMgmt.NONE;
}
}
上一篇
使用WindowManager進行progress提示
下一篇
Android 結束進程的幾種方法
相關文章
1.
android Wifi自動鏈接
2.
win10 系統 wifi自動斷開鏈接 wifi熱點不穩定
3.
android自動鏈接接入本身WIfi熱點的設備的IP地址
4.
ESP32 / ESP8266 MicroPython教程:自動鏈接WiFi
5.
Wifi沒法自動鏈接的問題
6.
android自動鏈接指定wifi
7.
Windows下自動鏈接WiFi 腳本
8.
iOS開發APP內自動鏈接wifi
9.
wpa_cli 鏈接 wifi
10.
centos8 鏈接wifi
更多相關文章...
•
Markdown 鏈接
-
Markdown 教程
•
PHP 連接 MySQL
-
PHP教程
•
SpringBoot中properties文件不能自動提示解決方法
•
IntelliJ IDEA中SpringBoot properties文件不能自動提示問題解決
相關標籤/搜索
自鏈接
鏈接
接點
動態鏈接庫
wifimanager
外部鏈接
MySQL鏈接
超鏈接
超級鏈接
無線
MyBatis教程
PHP教程
SQLite教程
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
在windows下的虛擬機中,安裝華爲電腦的deepin操作系統
2.
強烈推薦款下載不限速解析神器
3.
【區塊鏈技術】孫宇晨:區塊鏈技術帶來金融服務的信任變革
4.
搜索引起的鏈接分析-計算網頁的重要性
5.
TiDB x 微衆銀行 | 耗時降低 58%,分佈式架構助力實現普惠金融
6.
《數字孿生體技術白皮書》重磅發佈(附完整版下載)
7.
雙十一「避坑」指南:區塊鏈電子合同爲電商交易保駕護航!
8.
區塊鏈產業,怎樣「鏈」住未來?
9.
OpenglRipper使用教程
10.
springcloud請求一次好用一次不好用zuul Name or service not known
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
android Wifi自動鏈接
2.
win10 系統 wifi自動斷開鏈接 wifi熱點不穩定
3.
android自動鏈接接入本身WIfi熱點的設備的IP地址
4.
ESP32 / ESP8266 MicroPython教程:自動鏈接WiFi
5.
Wifi沒法自動鏈接的問題
6.
android自動鏈接指定wifi
7.
Windows下自動鏈接WiFi 腳本
8.
iOS開發APP內自動鏈接wifi
9.
wpa_cli 鏈接 wifi
10.
centos8 鏈接wifi
>>更多相關文章<<