3
Androidデバイスが接続されているネットワークに関する情報を見つける必要があります。基本的に、AndroidデバイスはAndroid TVで、WiFiとEthernet接続を備えています。それは常に(ゼロ)を示しているとして、それは私が使用しているコードを次に示し255.255.255.0Androidデバイスでネットマスクを検索
を示すべきであるのに対し、
私は、無線LANでの作業とnetMask
以外のすべての正しい情報を取得しています:
wifiMgr= (WifiManager) getSystemService(Context.WIFI_SERVICE);
dhcpInfo=wifiMgr.getDhcpInfo();
vDns1="DNS 1: "+intToIp(dhcpInfo.dns1);
vDns2="DNS 2: "+intToIp(dhcpInfo.dns2);
vGateway="Default Gateway: "+intToIp(dhcpInfo.gateway);
vIpAddress="IP Address: "+intToIp(dhcpInfo.ipAddress);
vLeaseDuration="Lease Time: "+String.valueOf(dhcpInfo.leaseDuration);
vNetmask="Subnet Mask: "+intToIp(dhcpInfo.netmask);
vServerAddress="Server IP: "+intToIp(dhcpInfo.serverAddress);
intToIp(int)
のための定義:
public String intToIp(int i) {
return ((i >> 24) & 0xFF) + "." +
((i >> 16) & 0xFF) + "." +
((i >> 8) & 0xFF) + "." +
(i & 0xFF) ;
}
AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
どうして私はそれを修正できますか?
コードを試したときに例外が発生するIOException:java.net.UnknownHostException:アドレスが4または16バイトでない:[-64]、なぜ-64ですか? – iSandeep
LinkProperties.getRoutes()は、[fe80 ::/64 - > :: wlan0,192.168.43.0/24 - > 0.0.0.0 wlan0,0.0.0.0/0 - > 192.168.43.1 wlan0、]を返します。 – iSandeep
これはインターフェイスの[ルーティングテーブル](https://en.wikipedia.org/wiki/Routing_table)です。それはインターフェイスが直接 '192.168.43.0/24'ネットワークに接続されていることを示しています。つまり、ネットワークアドレスが' 255.255.255.0'(24 x '1ビット)のネットマスクを持つ' 192.168.43.0'です。そして、ネットワークを出るゲートウェイ(ネットワークをインターネットの他の部分に接続するルータ)は192.168.43.1 – Malt