您的位置:首页 > 移动开发 > Android开发

Android 查看IP地址

2015-03-09 17:12 267 查看
在网上查看了不少Android手机获取用户IP的例子,不过很少发现理想的,大多情况仅仅是获取WiFi情况下的用户IP,而3G网络的IP网上很少看到相关代码,今天抽空出来搞搞不同网络下获取用户的IP,希望对大家有点用处,个人表达能力不大好,大家将就着看。

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//获取ip地址
		String ipAddress = IPAddressUtil.getIPAddress(this);
		Log.d("mytag", "ipAddress:" + ipAddress);
		
		
	}

	
}


package com.example.commonutil.util;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;

public class IPAddressUtil {

	public static String getIPAddress(Context context) {
		String ipAddress = "";
		ConnectivityManager manager = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = manager.getActiveNetworkInfo();
		if (networkInfo != null) {
			if (ConnectivityManager.TYPE_MOBILE == networkInfo.getType()) {
				ipAddress = getMobileIpAddress();
			} else {
				ipAddress = getLocalIpAddress(context);
			}
		}
		return ipAddress;
	}

	/** 移动网络 IP **/
	private static String getMobileIpAddress() {
		try {
			for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en
					.hasMoreElements();) {
				NetworkInterface intf = en.nextElement();
				for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr
						.hasMoreElements();) {
					InetAddress inetAddress = enumIpAddr.nextElement();
					if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
						return inetAddress.getHostAddress().toString();
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/** 非移动网络 IP **/
	private static String getLocalIpAddress(Context context) {
		WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
		WifiInfo wifiInfo = wifiManager.getConnectionInfo();
		// 获取32位整型IP地址
		int ipAddress = wifiInfo.getIpAddress();

		// 返回整型地址转换成“*.*.*.*”地址
		return String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff),
				(ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: