安卓获取设备ip地址
通过反射获取ConnectivityManager相关方法来获取ip
直接上代码
private void getActiveAddress() throws Exception {
ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
Method activeLinkPropertiesMethod = connectivityManager.getClass().getMethod("getActiveLinkProperties");
activeLinkPropertiesMethod.setAccessible(true);
LinkProperties linkProperties = (LinkProperties)activeLinkPropertiesMethod.invoke(connectivityManager);
if (linkProperties == null) return;
Method addressesMethod = linkProperties.getClass().getDeclaredMethod("getAddresses");
Collection<InetAddress> inetAddresses = (Collection<InetAddress>)addressesMethod.invoke(linkProperties);
Iterator<InetAddress> iterator = inetAddresses.iterator();
String addresses = "";
while (iterator.hasNext()) {
addresses += iterator.next().getHostAddress();
if (iterator.hasNext()) addresses += "\n";
}
Log.i("AAAAA", "ipaddress" + addresses);
}
所需权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>