Подтвердить что ты не робот

Автоматическая аутентификация для Android WiFi Direct

В Android ICS предусмотрен беспроводной интерфейс P2P (WiFi Direct).

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

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

  • Включите WiFi Direct из настроек.
  • Инициализировать соединение P2P. - initialize()
  • Откройте для себя Peer. - DiscoverPeers()
  • Посмотрите, соответствует ли MAC-адрес.
  • Подключитесь к обнаруженному Peer. - connect()

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

В то же время ситуация изменилась. Вы можете автоматически создать беспроводное соединение wifi с помощью creategroup() WifiP2pManager и получить случайно сгенерированный пароль и SSID с помощью onGroupInfoAvailable(), см. это описание с пример кода.