获取我的设备的WiFi直接IP地址

Tal*_*lib 8 java ip android wifi-direct

我试图获取我的设备的IP地址,但都是徒劳的,没有成功.我试过了

public String getP2PIpAddr() {
       WifiManager wifiManager = (WifiManager) getSystemService(WIFI_P2P_SERVICE);
       WifiInfo wifiInfo = wifiManager.getConnectionInfo();
       int ip = wifiInfo.getIpAddress();

       String ipString = String.format(
       "%d.%d.%d.%d",
       (ip & 0xff),
       (ip >> 8 & 0xff),
       (ip >> 16 & 0xff),
       (ip >> 24 & 0xff));

       return ipString;
    }
Run Code Online (Sandbox Code Playgroud)

但它给我0.0.0.0,没有其他方法也工作..帮助!!

Bud*_*ius 11

就像参考:我是WiFi-Shoot(通过WiFi Direct的直接文件传输应用程序)的开发者.

不幸的是,没有办法获得自己的IP地址,操作的一般原则略有不同:

  • 所有操作都将使用WiFiP2PManager进行
  • 要求initialize获得频道,所有其他操作都需要此频道.
  • 在你discoverPeersconnect他们中的一个之后
  • 您可以requestGroupInfo告诉您该设备是否为组所有者以及组所有者IP地址是什么.因此,非所有者可以使用提供的地址连接到所有者,所有者将收听连接.
  • 你也requestPeers可以给你一个所有连接对等体的列表.这包括MAC地址和名称.

通话Context.getSystemService(Context.WIFI_P2P_SERVICE)将为您提供WiFiP2PManager.

是的,你需要一堆WiFI许可,比如ACCESS_WIFI_STATE,CHANGE_WIFI_STATE等等.


kap*_*ani 6

向组所有者发送对等方的本地 IP 地址(以 192.168.xx 开头)。在这次“握手”之后,这并不需要时间,一切都很好。没有找到其他方法获取peer的ip地址,GroupListener/PeerListener/...提供的唯一信息就是mac地址。

  • 请进一步解释。 (4认同)
  • 这并没有回答这个问题——OP 想知道如何获得自己的 IP 地址,而不是如何通知 GO 已知的 IP 地址。关键是我们不知道从哪里获取 192.168.xx! (2认同)