//android 3.x,4.x修改静态ip
package com.example.iptest;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println(android.os.Build.VERSION.SDK_INT);
setIpWithTfiStaticIp();
}
/* 设置ip地址类型 assign: STATIC/DHCP 静态/动态
*/ private static void setIpAssignment(String assign, WifiConfiguration wifiConf) throws SecurityException,IllegalArgumentException,NoSuchFieldException,IllegalAccessException, InvocationTargetException, NoSuchMethodException
{
if (Build.VERSION.SDK_INT >= 21) {
Object ipConfiguration = wifiConf.getClass()
.getMethod("getIpConfiguration").invoke(wifiConf);
setEnumField(ipConfiguration, assign, "ipAssignment");
}
}
// 设置ip地址
private 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<Object> mLinkAddresses=(ArrayList<Object>)getDeclaredField(linkProperties,"mLinkAddresses");
mLinkAddresses.clear();
mLinkAddresses.add(linkAddress);
}
@SuppressWarnings("unchecked")
// 设置网关
private 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;
}
if(android.os.Build.VERSION.SDK_INT>=14)
{
//android4.x版本
Class<