2013-02-07 49 views
1

我使用连接管理器类和获取网络信息,我只是得到如果网络类型是Wifi或以太网。但是当我的网络类型是Wifi时,我想知道它的静态还是动态。如何检查WiFi连接是否是静态或非编程方式在android

有人可以帮我这个

+3

你在说静态/动态IP地址吗? – Grambot

+0

雅作为静态ipsettings – user1810931

+0

如果有人知道关于静态IP设置知道..我需要编程方式检查我的wifi或以太网是否takign静态IPSettings或不 – user1810931

回答

1

下面你可以找到改编自这thread简单(没有优化)代码。 代码是为Android 4.0编写的。

记住添加额外的用户权限:

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

方法:

public String getIpAssignment(){ 

    String myenumvalue=""; 
    WifiConfiguration wifiConf = null; 
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    WifiInfo connectionInfo = wifiManager.getConnectionInfo(); 
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();   
    for (WifiConfiguration conf : configuredNetworks){ 
     if (conf.networkId == connectionInfo.getNetworkId()){ 
      wifiConf = conf; 
      break;    
     } 
    } 
    if(wifiConf != null){ 

     try { 
      Object Enumer = getDeclaredField(wifiConf, "ipAssignment"); 
      myenumvalue = Enumer.toString(); 
     } catch (SecurityException e) { 
      e.printStackTrace(); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (NoSuchFieldException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } 


    } 

    return myenumvalue; 
} 

它返回从ipAssignment枚举的领域之一:未分配| STATIC | DHCP

相关问题