我使用连接管理器类并获取网络信息,我只获取网络类型是Wifi还是以太网。但是当我的网络类型是Wifi时,我想知道它是静态的还是动态的。
有人能帮我解决这个问题吗
发布于 2013-09-24 17:46:05
下面你可以找到从这个thread改编的简单的(未优化的)代码。代码是为Android4.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返回一个枚举字段: UNASSIGNED | STATIC | DHCP
发布于 2018-12-26 14:06:42
我的安卓测试设备安卓版本5.1.1(嵌入式板卡)我使用了上面的代码,但它陷入了错误("catch NoSuchFieldException")
我使用以下代码来查找静态或dhcp连接:
public void getWifiDhcpStatic(){
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()){
if (conf.toString().toLowerCase().indexOf("DHCP".toLowerCase())>-1){
Log.i("myLogDHCPorSTATIC","DHCP ");
}else if(conf.toString().toLowerCase().indexOf("STATIC".toLowerCase())>-1){
Log.i("myLogDHCPorSTATIC","STATIC ");
}
break;
}
}
}
不要忘记在清单中添加
<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" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
https://stackoverflow.com/questions/14756248
复制