Android WiFi Direct的自动认证

18
在Android ICS中,提供了无线P2P (WiFi Direct) API。
我尝试开发一个应用程序,如果MAC地址匹配,可以自动通过无线P2P连接两个手机。
根据SDK文档,我需要按照以下步骤进行:
  1. 从设置中启用WiFi Direct。
  2. 初始化P2P连接。- initialize()
  3. 发现Peer。- discoverPeers()
  4. 查看MAC地址是否匹配。
  5. 连接到已发现的Peer。- connect()
一旦调用connect() API,远端手机将会弹出一个连接认证对话框。(取决于WifiP2pConfig)
有没有办法在不让远端手机弹出对话框的情况下实现自动连接呢?

我有同样的问题,我不知道为什么他们没有在设置中实现这个选项。 - Erdinc Ay
2个回答

15
似乎认证对话框的自动化不可能,这也使得p2p路由变得不可能。目前,WpsInfo类(用于WifiP2pConfig类,在对等连接期间传递给WifiP2pManager的connect()函数中使用)仅以四种方式显示认证对话框:DISPLAY / KEYPAD / LABEL / PBC。我相信PBC(推按钮配置)是默认设置,也是您所指的内容。其他三个选项需要用户输入类型的pin码,使它们更不适合自动连接。也许如果我们能找到此认证对话框类的类型,我们可以自动点击“确定”按钮?
我希望能添加一个新选项,使应用程序能够进行身份验证,而不是用户。这种基于用户的身份验证看起来像是从蓝牙API继承而来,严重限制了wifi直连的实用性。也许谷歌的工作人员可以帮助我们解决这个问题?

自动身份验证是一种安全风险。攻击者可以在用户未经同意的情况下自动连接到“无辜”的手机。 - hengsti

3
在此期间,情况已发生变化。您可以使用WifiP2pManager的creategroup()自动创建wifi直接连接,然后使用onGroupInfoAvailable()获取随机生成的密码和SSID,详细信息请参见此描述以及示例代码

这是一个很好的发现,有人尝试过这种方法吗?他们能描述一下在标准的现代Android上的体验吗?我今天稍后会尝试一下,但在开始之前非常好奇。 - truedat101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接