2016-10-17 76 views
0

ifconfigルートの結果がAndroidデバイスでプログラム的に表示されるかどうかは不思議です。非ルート型デバイスでこれを行うことはできますか?AndroidでIfconfigとrouteコマンド

ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Service.CONNECTIVITY_SERVICE); 

       /* you can print your active network via using below */ 
       Log.i("myNetworkType: ", connectivityManager.getActiveNetworkInfo().getTypeName()); 
       WifiManager wifiManager= (WifiManager) getApplicationContext().getSystemService(getApplicationContext().WIFI_SERVICE); 


       Log.i("routes ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getRoutes().toString()); 
       Log.i("domains ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDomains().toString()); 
       Log.i("ip address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getLinkAddresses().toString()); 
       Log.i("dns address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDnsServers().toString()); 



       if(connectivityManager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI) { 
        Log.i("myType ", "wifi"); 
        DhcpInfo d =wifiManager.getDhcpInfo(); 
        Log.i("info", d.toString()+""); 
       } 
       else if(connectivityManager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_ETHERNET) { 
/* there is no EthernetManager class, there is only WifiManager. so, I used this below trick to get my IP range, dns, gateway address etc */ 

        Log.i("myType ", "Ethernet"); 
        Log.i("routes ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getRoutes().toString()); 
        Log.i("domains ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDomains().toString()); 
        Log.i("ip address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getLinkAddresses().toString()); 
        Log.i("dns address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDnsServers().toString()); 

       } 
       else { 

       } 

あなたが研ぐ知って到達できない出力 enter image description here

:あなたののAndroidManifest.xmlファイル

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

あなたのコードでは

答えて

0

あなたはWifiManagerを使用してWiFiまたはネットワーク経由で接続されています。WifiManagerはWi-Fiのみを扱っています。 ConnectivityManagerを使用する必要があります。 WifiManagerConnectivityManagerをマージしたコードを再度更新して、必要な結果を得ました。

関連する問題