私は現在、一種のwifiスニファを開発しています。これを実現するために、arm用にコンパイルされたtcpdumpバイナリを使用します。しかし、それは私がWifiインターフェースの名前を知っていることを前提としています。
SDKのドキュメントによると、NetworkInterfaceはgetName()メソッドを提供します。
このメソッドを使用する予定なので、最初のステップは、wifiインターフェイスに対応するNetworkInterfaceオブジェクトを取得することです。
これを行うには、WifiInfoを使用してIPアドレスを取得し、次にこのIPに対応するInetAddressを取得し、最後に静的メソッドgetByInetAddress(InetAddress address)を使用してNetworkInterfaceのインスタンスを取得します。
これが私のコードです:
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
InetAddress addr = InetAddress.getByAddress(bytes);
NetworkInterface netInterface = NetworkInterface.getByInetAddress(addr);
Log.e("MyTemp",netInterface.getName());
出力 :
SSID: Nancy-Universite, BSSID: 00:19:30:6a:a9:40, MAC: B4:07:F9:D5:7C:8C, Supplicant state: COMPLETED, RSSI: -80, Link speed: 11, Net ID: 6
しかし、私は次のようなものを除いて:
eth0
isVirtual()メソッドも試しましたが、コンパイルされず、メソッドisVirtual()がタイプNetworkInterfaceに対して定義されていないというエラーメッセージが表示されます。何が起こっているのかわかりません...
どんな助けでもありがたいです。