当我的设备是wifi直接P2P连接中的组所有者( GO )时,我的应用程序需要知道对等设备的IP地址(通常GO充当DHCP服务器,对等站从服务器接收IP )。我发现DHCP客户机列表存储在/data/misc/dhcp/dnsmasq.leases文件中,但是该应用程序必须是“dhcp”组的一部分才能读取该文件,并且在尝试读取该文件时会收到EACCES (权限被拒绝)。
是否可以在清单中添加读取该文件的权限?或者,有没有其他方法可以在没有root的情况下从java/原生Android框架中获取此DHCP客户端列表?
发布于 2012-06-22 05:44:13
没有。YOu需要使用服务发现协议。
发布于 2012-06-22 05:44:51
我通过向组所有者发送对等体的本地ip地址(以192.168.x.x开始)解决了这个问题。在这个“握手”之后,这并不是真的需要时间,一切都很好。没有找到任何其他方法来获取对等体的ip地址,唯一的信息由GroupListener/PeerListener/...是mac地址。
发布于 2014-07-08 15:06:36
我在onConnectionInfoAvailable中得到了GO的ip地址,这是您从BroadcastReceiver .WIFI_P2P_CONNECTION_CHANGED_ACTION事件中获得的地址,该事件在连接后触发。
因此,您在连接之后调用requestConnectionInfo(mChannel,mMyWiFiActivity),然后挂钩到回调onConnectionInfoAvailable(WifiP2pInfo信息)。
这将为您提供组owner.info.groupOwnerAddress.getHostAddress();的地址
希望这能有所帮助
https://stackoverflow.com/questions/11127006
复制相似问题