Отсутствует метод в android.net.wifi.WifiManager

На сайте androidjavadoc.com , в классе WifiManager указан метод startScanActive, позволяющий выполнять активное сканирование wi-fi. Недавно здесь также обсуждалось .

Тем не менее, когда я пытаюсь использовать этот метод в Eclipse, он не найден (не определен). startScan есть. Я пробовал это со всеми версиями android.jar, входящими в Android SDK (от 2.3 до 3.1).

Функция существует? Как я могу получить к нему доступ?

Большое спасибо


person filip    schedule 04.06.2011    source источник
comment
Почему бы вам не посмотреть официальную документацию? Он существует, начиная с уровня API 1. Можете ли вы показать свой код? Здесь: developer.android.com/reference/ андроид/нет/вай-фай/   -  person EboMike    schedule 04.06.2011
comment
Я имею в виду метод startScanActive, а не startScan. Код прост: wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); wifi.startScanActive();   -  person filip    schedule 04.06.2011


Ответы (3)


Как я уже говорил, ознакомьтесь с официальной документацией. Это не там. Таким образом, он не является частью общедоступного API, и вам не следует его вызывать. Даже если он публичный, это не значит, что его можно назвать.

Недокументированные вызовы API могут исчезнуть без уведомления в любой момент в будущих версиях, что приведет к поломке вашего приложения.

person EboMike    schedule 04.06.2011
comment
Спасибо, но на мои вопросы еще нет ответа: существует ли он? Как получить к нему доступ? Для общедоступного совместимого приложения вы правы. Лучше не использовать неофициальные API. Но вы не знаете дела. Для внутреннего приложения компании, отслеживающего своих сотрудников, может иметь смысл использовать эту функцию, если устройство известно. Активное сканирование позволяет намного быстрее обнаруживать точки доступа. - person filip; 04.06.2011

Вот мое собственное объяснение, основанное на цитируемых ресурсах: функция не содержится в Android SDK. В исходном коде он отмечен тегом Javadoc @hide (source), что приводит к его исключению из документацию, но и не компилировать для SDK. В целях тестирования можно скомпилировать и использовать собственный файл jar. Но на самом сотовом телефоне это будет зависеть от поставщика, если метод будет присутствовать.

Похожий вопрос. Опубликовать на сайте androidjavadoc.com.

person filip    schedule 05.06.2011

Когда ничего не помогает, идем к корням:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.4_r1/android/net/wifi/WifiManager.java#WifiManager.startScanActive%28%29

Это общедоступный метод в WifiManager с версии 1.6, хотя вы правы, говоря, что Eclipse не находит этот метод по какой-то странной причине.

person Aleadam    schedule 04.06.2011
comment
Большое спасибо! Я проанализировал jar-файлы, поставляемые Android SDK, и этот метод определенно не содержится в них. Так что Эклипс не виноват... - person filip; 05.06.2011
comment
Если, как вы сказали в комментарии, он предназначен для внутреннего использования, у вас не должно возникнуть проблем с компиляцией источников самостоятельно с включенным этим методом или изменением startScan(). Это всего лишь вопрос одного логического значения: mService.startScan(true); - person Aleadam; 05.06.2011
comment
Да спасибо. Сначала я пытаюсь скомпилировать Android для ПК, чтобы кодировать, и надеюсь, что этот метод доступен на мобильных телефонах. - person filip; 05.06.2011