如果扫描不到wifi 请注意权限有没有申请到,以及定位是否开启(应该是部分安卓限制了要开启高精度定位才能扫描)!!!
- 首先是申请权限 ,动态申请代码请自行处理,都是固定代码
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
List<ScanResult> wifiScanList = wifiManager.getScanResults();
for (ScanResult wifi : wifiScanList) {
String ssid = wifi.SSID;
String bssid = wifi.BSSID;
int rssi = wifi.level;
Log.d(">>>>>", "ssid:" + ssid + " bssid:" + bssid + " rssi:" + rssi);
}
}
};
- 然后是注册wifi扫描接收器以及开启wifi、扫描wifi
WifiManager wifiManager;
private void scanWifi() {
registerReceiver(wifiScanReceiver, new IntentFilter((WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)));
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
wifiManager.startScan();
Log.d(">>>>>>>>", "开始扫描wifi");
}
- 最后是连接wifi,同名(相同ssid)wifi也在这里处理了,就是通过BSSID(MAC地址)区分出唯一的wifi热点
private void connectWifi() {
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\"Tp-link-xxx\"";
wifiConfiguration.BSSID = "xx:xx:xx:xx:xx:xx";
wifiConfiguration.preSharedKey = "\"12345678\"";
int networkId = wifiManager.addNetwork(wifiConfiguration);
wifiManager.enableNetwork(networkId, true);
boolean connectStatus=wifiManager.reconnect();
Log.d("ConnectWifi", "status:"+connectStatus);
}