Ich bin mit einem Problem konfrontiert, das 2011 in this tracker issue gemeldet wurde und möchte eine geeignete Problemumgehung entwickeln. Ich möchte alle Netzwerkschnittstellen eines Android-Geräts für den Benutzer anzeigen und sie nach ihrem Typ und ob sie derzeit aktiv sind oder nicht, kategorisieren. Ich bin auf mindestens API 15 ausgerichtet.Workaround-Mapping zwischen NetworkInfo und NetworkInterface
Soweit ich weiß, gibt es zwei Möglichkeiten Netzwerk-Schnittstelle Informationen zu bekommen:
über die integrierte Java
NetworkInterface
-KlasseNetworkInterface.getNetworkInterfaces()
. Dadurch werdenNetworkInterface
Objekte zurückgegeben, die Informationen wie den Schnittstellennamen, alle der Schnittstelle zugeordneten IP-Adressen usw. enthalten. Für mein Gerät (LG G3) erhalte ich Schnittstellen wielo
,wlan0
undrmnet0
. Dies liefert auch Informationen wie die IP-Adresse, MTU, Subnetzmaske und Broadcast-Adresse, die ich brauche.Über die Android API
ConnectivityManager
Service mitaConnManager.getAllNetworkInfo()
. Dies gibt ungefähr 20NetworkInfo
Objekte für mein Gerät zurück, die meisten sind unbenutzt, aber sie beinhalten die TypenMOBILE
,WIFI
,BLUETOOTH
usw. Dies beinhaltet keine Netzwerkparameter wie IP-Adressen, MTU, etc., wie oben erwähnt.
Die Frage, wie in dem Tracker erklärt ist, dass es keine integrierte Möglichkeit, die NetworkInfo
zu einem NetworkInterface
oder umgekehrt auf der Karte, und ich würde den Namen der Schnittstelle an den entsprechenden zur Karte zu vermeiden, wie mit NetworkInfo
Wenn überhaupt möglich.
Da ich eine Ahnung habe, die nicht möglich ist, gibt es eine Liste aller potenziellen Netzwerkschnittstellennamen für die meisten Anbieter? rmnet[0-9]
scheint häufig für Geräte mit Qualcomm-Basisband-Prozessoren und wlan[0-9]
für WiFi usw.
Im schlimmsten Fall nehme ich, dass ich den Schnittstellentyp als unbekannt Liste könnte, wenn die Schnittstellennamen keine gemeinsamen Vorlagen entsprechen. Danke im Voraus.