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.
js中 charCodeAt
2.
Android中通過ViewHelper.setTranslationY實現View移動控制(NineOldAndroids開源項目)
3.
【Android】日常記錄:BottomNavigationView自定義樣式,修改點擊後圖片
4.
maya 文件檢查 ui和數據分離 (一)
5.
eclipse 修改項目的jdk版本
6.
Android InputMethod設置
7.
Simulink中Bus Selector出現很多? ? ?
8.
【Openfire筆記】啓動Mac版Openfire時提示「系統偏好設置錯誤」
9.
AutoPLP在偏好標籤中的生產與應用
10.
數據庫關閉的四種方式
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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
>>更多相關文章<<