sendet die lokale IP-Adresse des Peers (beginnend mit 192.168.x.x) an den Gruppenbesitzer. Nach diesem "Handschlag", der keine Zeit braucht, ist es gut zu gehen. Ich habe keine andere Möglichkeit gefunden, die IP-Adresse des Peers zu erhalten. Die einzige Information, die von GroupListener / PeerListener / ... zur Verfügung gestellt wird, ist die MAC-Adresse.
Nur als Hinweis: Ich bin der Entwickler des WiFi-Shoot (ein direkter Dateiübertragung App über WiFi Direct) .
Leider gibt es keine Möglichkeit, eine eigene IP-Adresse zu erhalten, und das allgemeine Funktionsprinzip ist etwas anders:
initialize
auf, um einen Channel zu erhalten, alle anderen Operationen benötigen diesen Channel. discoverPeers
und connect
auf eins von ihnen requestGroupInfo
angeben, ob dieses Gerät der Gruppeninhaber ist und welche IP-Adresse des Gruppeneigentümers verwendet wird. So können Nicht-Besitzer eine Verbindung zum Eigentümer herstellen, indem sie die angegebene Adresse verwenden, und der Besitzer hört Verbindungen. requestPeers
angeben, die Ihnen eine Liste aller verbundenen Peers bietet. Dazu gehören MAC-Adressen und Namen. Der Aufruf Context.getSystemService(Context.WIFI_P2P_SERVICE)
gibt Ihnen einen WiFiP2PManager.
Und ja, Sie benötigen eine Reihe von WiFI-Berechtigungen wie ACCESS_WIFI_STATE
, CHANGE_WIFI_STATE
unter anderen.
Verwenden Sie diesen Code
%Vor%Fügen Sie Ihrem Manifest die Berechtigung hinzu.
%Vor% Haben Sie Berechtigungen für die WLAN-Einstellungen, die an Ihr Android-Programmmanifest angehängt sind? Mindestens ACCESS_WIFI_STATE
wird benötigt [1] . Wenn das nicht genug ist, wird auch ACCESS_NETWORK_STATE
benötigt [2] . Ich habe nichts Schlechtes in deinem Code gefunden, also wäre es ein Vorschlag, mit Manifest zu spielen.
Der erste Link, den ich als Quelle habe, hat in der angenommenen Antwort auch INTERNET
Erlaubnis, so dass Ihr Programm auch irgendwo Kontakt aufnehmen kann, um nach Verbindung und damit IP zu fragen. Das wäre die nächste Erlaubnis zu versuchen, wenn die beiden erstens nicht funktionieren.
Sie haben nach offiziellen oder glaubwürdigen Quellen gefragt, diese stammen von den glaubwürdigen Quellen. Jeder Informationsfrieden wird mindestens einmal auf Stackoverflow abgestimmt, und wenn etwas sagt, dass diese Sachen es zumindest für jemanden geschafft haben.
Meine Quellen:
[1] So erhalten Sie die IP-Adresse des Geräts aus dem Code ?
[2] Android WifiManager getConnectionInfo erfordert CHANGE_WIFI_STATE?
Wenn Sie versuchen, die IP-Adresse eines anderen Geräts mit dem WiFi-Netzwerk zu verbinden
%Vor%Ermitteln der Internet-IP-Adresse, d. h. der Live-IP-Adresse
%Vor%Für tiefer gehendes Wissen und andere native Methoden Brache Link
Überprüfen Sie zunächst die Manifestdatei auf Berechtigungen:
%Vor%Definieren Sie dann, wonach die IP sucht. Wenn Sie diese IP-Adresse für einen Zweck senden möchten, der über den Dienst hinausgeht, suchen Sie nach WIFI_SERVICE. Wenn Sie sich für die IP-Adresse Ihres Service-Broadcasts interessieren, hat die NsdServiceInfo-Instanz die getHost () -Methode.
Tags und Links java android ip wifi-direct