2012-02-09 2 views
17

В Android ICS предоставляется беспроводной интерфейс P2P (WiFi Direct).Автоматическая аутентификация для Android WiFi Direct

Я попытался разработать приложение, которое может автоматически соединять 2 телефона через беспроводной P2P, если MAC-адрес соответствует.

Из SDK документации, я должен следующие шаги:

  1. Включите Wi-Fi Direct от настройки.
  2. Инициализировать соединение P2P. - initialize()
  3. Discover Peer. - discoverPeers()
  4. Посмотрите, совпадает ли MAC-адрес.
  5. Подключитесь к обнаруженному Peer. - connect()

После того, как вызывается API-интерфейс connect(), на телефоне Farside появится диалоговое окно проверки подлинности подключения. (В зависимости от WifiP2pConfig)

Можно ли подключиться автоматически, не имея Farside, чтобы открыть диалоговое окно?

+0

У меня такая же проблема, я не знаю, почему они не реализовали вариант для этого в настройках. –

ответ

15

Кажется, автоматизация диалогов аутентификации невозможна, и это делает невозможным маршрутизацию p2p. В настоящее время класс WpsInfo (который используется в классе WifiP2pConfig, который передается в функцию connect() WifiP2pManager во время однорангового соединения) отображает только диалоговые окна аутентификации четырьмя способами: DISPLAY/KEYPAD/LABEL/PBC. Я считаю, что PBC (конфигурация кнопки) является значением по умолчанию и является тем, на что вы ссылаетесь. Остальные три варианта требуют от пользователя ввода типа штыря, что делает их еще более непригодными для автоматических подключений. Может быть, если мы хотим найти тип этого класса проверки подлинности, мы могли бы автоматизировать нажатие кнопки «ok»?

Я хочу добавить новую опцию, которая даст приложению возможность аутентифицировать соединение, а не пользователя. Эта аутентификация, основанная на пользователе, выглядит так, как ее переносится с bluetooth api, и строго ограничивает полезность Wi-Fi напрямую. Может быть, люди в google могли бы помочь нам?

+0

Автоматическая аутентификация - это риск для безопасности. Злоумышленник может автоматически подключаться к «невиновному» телефону без участия пользователей. – hengsti

1

Между тем ситуация изменилась. Вы можете создать WiFi прямое соединение полностью автоматический с помощью creategroup() из WifiP2pManager и выборки случайно сгенерированный пароль и идентификатор SSID с onGroupInfoAvailable() см this description с example code.