Android WifiManager.getScanResults () не возвращает скрытые данные SSID

#android #wifi

#Android #wifi

Вопрос:

Я работаю над проектом Android для сканирования локальной среды Wi-Fi в нашем офисе. Короче говоря, мы хотим найти точки доступа, которые там не принадлежат.

Проблема: 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();
            // ...
        }
    }
}   
  

Спасибо!

Ответ №1:

Так устроен Android. Никакие скрытые SSID не передаются приложениям во время сканирования.

Это ошибка, о которой сообщалось давно и на которую даже не обращали внимания.

http://www.google.com/url?sa=tamp;rct=jamp;q=amp;esrc=samp;source=webamp;cd=2amp;sqi=2amp;ved=0CC4QFjABamp;url=http://code.google.com/p/android/issues/detail?id=10305amp;ei=mf8CT-rREOTf0QH94LS3Agamp;usg=AFQjCNECvPs0QfS2MERv4jQmL7CYSsR95Aamp;sig2=W0DAy5n32wzl0sAbo5E42g

Комментарии:

1. это все еще серьезная проблема? Я просто столкнулся с этим через 4 года после того, как ошибка была впервые обнаружена@

Ответ №2:

видя эту сеть:

Для подключения к скрытому SSID на телефоне должно быть установлено значение true для WifiConfiguration.hiddenSSID. В настоящее время, похоже, нет способа включить это через пользовательский интерфейс телефона, но благодаря Стюарту есть обходной путь.уэйн.скотт. Обратите внимание, что «MYSID» должно быть именем скрытого SSID. По сути, вам нужно запустить следующий код на вашем телефоне. На данный момент нет готового APK, который делает это, поэтому для этого требуется создать программу с Android SDK, скомпилировать ее и запустить на телефоне.

Тогда вы должны понимать, что это может быть сложно сделать (я не скажу, что невозможно, но почти). Возможно, с этой информацией вы можете что-то сделать.

Комментарии:

1. Я ценю эту информацию. Это казалось многообещающим, и я провел несколько тестов, установив для этого свойства значение true (наряду со всевозможными вариациями), но, похоже, это не меняет поведение сканирования. Похоже, он участвует только в подключении к скрытой точке доступа, для которой вы уже знаете SSID.