您好,連接隱藏wifi的方法:
龍華網(wǎng)站建設公司創(chuàng)新互聯(lián),龍華網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為龍華上千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的龍華做網(wǎng)站的公司定做!
1、打開設置,進入WIFI開關(guān)界面
2、點擊WIFI鏈接,選擇要鏈接的WIFI.
3、選擇下面的其他鏈接方式。
4、輸入隱藏的WIFI名稱,就是路由器發(fā)出來信號的名字。
5、點擊安全性選擇加密方式,一般加密方式都是WPA/WPA2PSK。
6、輸入WIFI的密碼,點擊確定即可連接該wifi網(wǎng)絡了。
WiFi是一種無線聯(lián)網(wǎng)技術(shù),常見的是使用無線路由器。那么在這個信號覆蓋的范圍內(nèi)都可以采用WiFi連接的方式進行聯(lián)網(wǎng)。如果無線路由器連接了一個ADSL線路或者其他的聯(lián)網(wǎng)線路,則又被稱為“熱點”。
在Android中對WiFi操作,Android本身提供一些有用的包,在anroid.net.wifi包下面。
是一種特殊的 Ad-hoc LAN (一種支持點對點訪問的無線網(wǎng)絡應用模式)的應用,一個無線網(wǎng)絡至少由一個連接到有線網(wǎng)絡的AP和若干無線工作站組成,這種配置稱為一個基本服務裝置。一群計算機設定相同的
BSS名稱,即可自成一個group,而此BSS名稱,即所謂BSSID。通常,手機WLAN中,bssid其實就是無線路由的MAC地址。
網(wǎng)絡ID。
無線網(wǎng)絡的安全認證模式。
SSID(Service Set Identif)用于標識無線局域網(wǎng),SSID不同的無線網(wǎng)絡是無法進行互訪的。
wifi無線連接的描述,包括接入點,網(wǎng)絡連接狀態(tài),隱藏的接入點,IP地址,連接速度,MAC地址,網(wǎng)絡ID,信號強度等信息。這里簡單介紹一下這里的方法:
用來管理我們的wifi 連接,這里已經(jīng)定義好了一些類,可以供我們使用,獲取WiFi網(wǎng)卡狀態(tài)。
WIFI網(wǎng)卡的狀態(tài)是由一系列的整形常量來表示的。
WiFi需求申請權(quán)限,在AndroidManifest.xml文件中填寫。
1.打開WiFi
2.掃描WiFi信號
3.得到掃描WIFI結(jié)果
4.根據(jù)WIFI的名稱SSID判定指定WIFI是否已經(jīng)配置好,配置好則返回其networkId,用于連接。之前嘗試了BSSID地址沒成功,所以只能使用SSID
5.如果需要連接的WIFI沒有配置好,即沒有保存密碼。則為指定名稱ssid的WIFI添加密碼信息psw,添加成功后返回給其分配的networId,同于連接
6.根據(jù)步驟6配置好需要連接的WIFI密碼信息后,下面通過networkId連接指定WIFI。在連接經(jīng)過步驟6剛添加配置信息的WIFI信號之前需要重新執(zhí)行下步驟4,得到新的配置好信息的列表。
先進行WiFi權(quán)限的聲明
!-- 獲取WiFi狀態(tài) --
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /
uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /
!--? api = Android29調(diào)用setWifiEnabled??--
uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /
!-- 定位權(quán)限(api = 23 用于 WIFI掃描)--
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /
注意:ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION是危險級權(quán)限需要使用中還需要動態(tài)申請,申請其中一個即可。
WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (Build.VERSION.SDK_INT =Build.VERSION_CODES.R) {
Intent panelIntent =new Intent(Settings.Panel.ACTION_WIFI);
startActivityForResult(panelIntent,null);
}else{ mWifiManager.setWifiEnabled(!isEnable);}
可以通過監(jiān)聽系統(tǒng)廣播來了解WiFi狀態(tài)。
WIFI_STATE_CHANGED_ACTION:WiFi開關(guān)狀態(tài);
SCAN_RESULTS_AVAILABLE_ACTION:WiFi列表變化;
RSSI_CHANGED_ACTION:WiFi信號強度變化。
IntentFilter mFilter =new IntentFilter();
mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
mReceiver =new BroadcastReceiver() {
@Override
public void onReceive(Context context,Intent intent) {
handleEvent(intent);
}
};
registerReceiver(mReceiver, mFilter);
private void handleEvent(Intent intent) {
String action = intent.getAction();
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
final int wifiState =mWifiManager.getWifiState();
if(wifiState ==WifiManager.WIFI_STATE_ENABLED){
postDelayed(()-{mRefreshLayout.autoRefresh();},1000);
}
}else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) {
}else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
if(System.currentTimeMillis() -mLastUpateWifiRssiTime 1000){//刷新太快
? ? ? ? return;
}
}
updateWifiChange();
}
切記:wifistate切換到WifiManager.WIFI_STATE_ENABLED,mWifiManager.isWifiEnabled()需要有個等待時間切換。
3的基礎上解析廣播應答
private void updateWifiChange() {
final int wifiState =mWifiManager.getWifiState();
switch (wifiState) {
case WifiManager.WIFI_STATE_ENABLED:
ArrayListresults = (ArrayList)mWifiManager.getScanResults();
updateApListView(results);
mWlanSb.setChecked(mWifiManager.isWifiEnabled() );
break;
case WifiManager.WIFI_STATE_ENABLING:
break;
case WifiManager.WIFI_STATE_DISABLING:
mAdapter.clearData();
mWlanSb.setChecked(mWifiManager.isWifiEnabled() );
break;
case WifiManager.WIFI_STATE_DISABLED:
break;
}
}