Android 如何获取所有wifi接入点的BSSID?
我需要获取所有AP的BSSID(MAC)。请查找下面的代码块Android 如何获取所有wifi接入点的BSSID?,android,android-wifi,wifi,Android,Android Wifi,Wifi,我需要获取所有AP的BSSID(MAC)。请查找下面的代码块 List<WifiConfiguration> test = wifiManager.getConfiguredNetworks(); for(int k=0;k<test.size();k++){ Log.d("acheck", "test BSSID = "+test.get(k).BSSID); Log.d("acheck", "test B
List<WifiConfiguration> test = wifiManager.getConfiguredNetworks();
for(int k=0;k<test.size();k++){
Log.d("acheck", "test BSSID = "+test.get(k).BSSID);
Log.d("acheck", "test BSSID = "+test.get(k).BSSID);
}
List test=wifiManager.getConfiguredNetworks();
对于(intk=0;k在配置中,它只是设置部分(例如,像询问user/pass/WPA或NULL之类的对话框)
要从AP获取BSSID,您需要从ScanResult获取它
public void loadWifiAvailableList() {
List<ScanResult> results = wifiManager.getScanResults();
ScanResult bestSignal = null;
etWifiList.setText(""); // etWifiList is EditText
int count = 1;
for (ScanResult result : results) {
etWifiList.append(count++ + ". " + result.SSID + " : " + result.level + "\n" +
result.BSSID + "\n" + result.capabilities + "\n" +
"\n=======================\n");
if (bestSignal == null || WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0)
{
bestSignal = result;
}
}
String message = String.format("%s networks found. %s is the strongest.",
results.size(), bestSignal.SSID + " : " + bestSignal.level);
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
public void loadWifiAvailableList(){
List results=wifiManager.getScanResults();
ScanResult bestSignal=null;
etWifiList.setText(“”;//etWifiList是EditText
整数计数=1;
用于(扫描结果:结果){
etWifiList.append(计数+++“+result.SSID+”:“+result.level+”\n+
result.BSSID+“\n”+result.capabilities+“\n”+
“\n========================================\n”);
if(bestSignal==null | | WifiManager.compareSignalLevel(bestSignal.level,result.level)<0)
{
最佳信号=结果;
}
}
String message=String.format(“%s网络找到。%s是最强的。”,
results.size(),bestSignal.SSID+“:”+bestSignal.level);
Toast.makeText(这个,消息,Toast.LENGTH_LONG).show();
}
改编了@ToonSuperLove的答案,主要是为了避免NPE
public class WifiTest extends Activity {
public void loadWifiAvailableList(EditText etWifiList) {
WifiManager wifiManager = (WifiManager)
getSystemService(Context.WIFI_SERVICE);
List<ScanResult> results = wifiManager.getScanResults();
String message = "No results. Check wireless is on";
if (results != null) {
final int size = results.size();
if (size == 0) message = "No access points in range";
else {
ScanResult bestSignal = results.get(0);
etWifiList.setText(""); // etWifiList is EditText
int count = 1;
for (ScanResult result : results) {
etWifiList.append(count++ + ". " + result.SSID + " : "
+ result.level + "\n" + result.BSSID + "\n"
+ result.capabilities + "\n"
+ "\n=======================\n");
if (WifiManager.compareSignalLevel(bestSignal.level,
result.level) < 0) {
bestSignal = result;
}
}
message = String.format(
"%s networks found. %s is the strongest.", size,
bestSignal.SSID + " : " + bestSignal.level);
}
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}
公共类WifiTest扩展活动{
公共无效加载WifiAvailableList(EditText-EwifiList){
WifiManager WifiManager=(WifiManager)
getSystemService(Context.WIFI_服务);
List results=wifiManager.getScanResults();
String message=“无结果。检查无线是否打开”;
如果(结果!=null){
最终整数大小=results.size();
if(size==0)message=“范围内无接入点”;
否则{
ScanResult bestSignal=results.get(0);
etWifiList.setText(“”;//etWifiList是EditText
整数计数=1;
用于(扫描结果:结果){
etWifiList.append(count++“+result.SSID+”:“
+result.level+“\n”+result.BSSID+“\n”
+result.capabilities+“\n”
+“\n========================================\n”);
如果(WifiManager.compareSignalLevel)(bestSignal.level,
结果(级别)<0){
最佳信号=结果;
}
}
message=String.format(
找到%s个网络。%s是最强的。“,大小,
bestSignal.SSID+“:”+bestSignal.level);
}
}
Toast.makeText(这个,消息,Toast.LENGTH_LONG).show();
}
}
要获取当前连接的WIFI网络的BSSID,请使用WiFiInfo类
WifiManager wifiMan = (WifiManager) context.getSystemService(
Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMan.getConnectionInfo();
String macAddr = wifiInfo.getMacAddress();
String bssid = wifiInfo.getBSSID();
改编了这段优秀的代码片段,并将其与来自Marakana(grazie mille,marko!)的一些代码混合,以提取设备上连接和wifi网络信息存储的所有内容。:)升级!什么是NPE? @x0a我猜是NullPointerException