摘要:本文将带你了解Android应用开发Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址,希望本文对大家学Android有所帮助。
Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址。
//查看Wifi地址 public String getWifiIpAddress() { //获取wifi服务 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); //判断wifi是否开启 if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); } WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = intToIp(ipAddress); Log.d(wuc, wifiIp = + ip); return ip; } //获取GPRS本地ip地址 public String getLocalIpAddress() { try { for (Enumeration
}
}
} catch (SocketException ex) {
Log.e(WifiPreference IpAddress, ex.toString());
}
return null;
}
private String intToIp(int i) {
return (i & 0xFF ) + . +
((i >> 8 ) & 0xFF) + . +
((i >> 16 ) & 0xFF) + . +
( i >> 24 & 0xFF) ;
}
日志信息
09-10 14:58:06.288 12190-12190/com.example.administrator.newtext D/wuc: gprs = 10.96.76.60
09-10 14:58:15.488 12190-12190/com.example.administrator.newtext D/wuc: wifiIp = 192.168.1.103
修改wifi地址网上找的-------------------------
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo connectionInfo = wifiManager.getConnectionInfo(); List
public static void setIpAssignment(String assign, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { Log.d(wuc, wifiConfin = + wifiConf); setEnumField(wifiConf, assign, ipAssignment); } public static void setIpAddress(InetAddress addr, int prefixLength, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, ClassNotFoundException, InstantiationException, InvocationTargetException { Object linkProperties = getField(wifiConf, linkProperties); if (linkProperties == null) return; Class laClass = Class.forName(android.net.LinkAddress); Constructor laConstructor = laClass.getConstructor(new Class[]{ InetAddress.class, int.class}); Object linkAddress = laConstructor.newInstance(addr, prefixLength); ArrayList mLinkAddresses = (ArrayList) getDeclaredField(linkProperties, mLinkAddresses); mLinkAddresses.clear(); mLinkAddresses.add(linkAddress); } public static void setGateway(InetAddress gateway, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException, ClassNotFoundException, NoSuchMethodException, InstantiationException, InvocationTargetException { Object linkProperties = getField(wifiConf, linkProperties); if (linkProperties == null) return; Class routeInfoClass = Class.forName(android.net.RouteInfo); Constructor routeInfoConstructor = routeInfoClass .getConstructor(new Class[]{InetAddress.class}); Object routeInfo = routeInfoConstructor.newInstance(gateway); ArrayList mRoutes = (ArrayList) getDeclaredField(linkProperties, mRoutes); mRoutes.clear(); mRoutes.add(routeInfo); } public static void setDNS(InetAddress dns, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { Object linkProperties = getField(wifiConf, linkProperties); if (linkProperties == null) return; ArrayList
}
但是这个wifi修改地址没成功。
提示:java.lang.NoSuchFieldException: ipAssignment
难道是ipAssignment名称不对?
看网上说getField换成getDeclaredField
提示:java.lang.NoSuchFieldException: No field ipAssignment in class Landroid/net/wifi/WifiConfiguration; (declaration of 'android.net.wifi.WifiConfiguration' appears in /system/framework/framework.jar)
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号