Android WiFiManager.getScanResults()不返回隐藏的SSID数据

时间:2011-10-13 20:38:12

标签: android wifi

我正在开发一个Android项目来扫描我们办公室的本地WiFi环境。简短的故事是我们想要找到不属于那里的接入点。

问题:Android似乎没有返回有关隐藏SSID的接入点的信息。有谁知道这是怎么做的?在其他平台上,扫描结果集通常包含有关具有隐藏SSID的接入点的所有常规数据,减去(显然)其SSID。

有谁知道在Android上如何做到这一点?

我的代码看起来像我见过的例子:

public class Scanner {  
    private WifiManager mainWifi;
    private WifiReceiver receiverWifi;
    // ...
    public Scanner(Context context){
        mainWifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        receiverWifi = new WifiReceiver();
        context.registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        mainWifi.startScan();
    }
    // ...
    class WifiReceiver extends BroadcastReceiver {
        public void onReceive(Context c, Intent intent) {
            List<ScanResult> scanResultsList = mainWifi.getScanResults();
            // ...
        }
    }
}   

谢谢!

2 个答案:

答案 0 :(得分:3)

这就是android的工作方式。扫描期间没有隐藏的SSID传递给应用程序。

这是一个很久以前就已经报道的错误,甚至从来没有被人看过。

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&sqi=2&ved=0CC4QFjAB&url=http%3A%2F%2Fcode.google.com%2Fp%2Fandroid%2Fissues%2Fdetail%3Fid%3D10305&ei=mf8CT-rREOTf0QH94LS3Ag&usg=AFQjCNECvPs0QfS2MERv4jQmL7CYSsR95A&sig2=W0DAy5n32wzl0sAbo5E42g

答案 1 :(得分:2)

看到这个web

  

要连接到隐藏的SSID,手机必须具有   WifiConfiguration.hiddenSSID设置为true。目前还没有   似乎是一种通过手机用户界面启用此功能的方法,但有一个   解决方法感谢stewart.wayne.scott。请注意“MySSID”应该是   隐藏SSID的名称。基本上你需要运行以下内容   手机上的密码。目前还没有预制的APK   这个,所以需要用Android SDK创建一个程序,   编译它,并在手机上运行它。

然后你必须明白这可能很难做到(我不会说不可能,但差不多)。也许有了这些信息,你可以做点什么。