`
raymond.chen
  • 浏览: 1436943 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android获取本机IP地址

 
阅读更多

1、layout页面

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btnGetIP"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="获取本机IP" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/txtResult"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textMultiLine"
            android:lines="5" >

            <requestFocus />
        </EditText>

    </LinearLayout>

</LinearLayout>

 

2、AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.phonetest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="18"
        android:targetSdkVersion="18" />
    
    
		
		<!-- permission -->
    
		<uses-permission android:name="android.permission.INTERNET" />
    
		<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
		<uses-permission android:name="android.permission.CHANGE_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.WAKE_LOCK" />
   
		
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        
		android:debuggable="true" >
        <activity
            android:name="com.example.phonetest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

3、Activity类

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);	
		init();
	}

	private void init(){
		final TextView txtResult = (TextView)findViewById(R.id.txtResult);
		
		//btnStart
		Button btnGetIP = (Button)findViewById(R.id.btnGetIP);
        View.OnClickListener listener1 = new View.OnClickListener(){
            @Override
            public void onClick(View v) {
            	String address = null;
            	try{
            		address = getIPAddress();
            	}catch(Exception ex){
        			Log.e("MainActivity", ex.getMessage());
        			address = "error: " + ex.getMessage();
            	}
            	txtResult.setText(address);
            }
        };
        btnGetIP.setOnClickListener(listener1);
	}

	private String getIPAddress() throws SocketException {
		String address = null;
		ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = cm.getActiveNetworkInfo();
		if(networkInfo != null && networkInfo.isConnected()){
			if(networkInfo.getType() == ConnectivityManager.TYPE_MOBILE){//2G,3G,4G
				address = getIPAddressForNetwork();
			}else if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI){//WIFI
				address = getIPAddressForWifi();
			}
		}
		return address;
	}

	private String getIPAddressForNetwork() throws SocketException {
		String address = null;
		for(Enumeration<NetworkInterface> enum1=NetworkInterface.getNetworkInterfaces(); enum1.hasMoreElements();){
			NetworkInterface networkInterface = enum1.nextElement();
			for(Enumeration<InetAddress> enum2=networkInterface.getInetAddresses(); enum2.hasMoreElements();){
				InetAddress inetAddress = enum2.nextElement();
				if(!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address){
					address = "type: 手机网络\n本机IP: " + inetAddress.getHostAddress().toString();
				}
			}
		}
		return address;
	}
	
	private String getIPAddressForWifi() {
		WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
		
		if(!wifiManager.isWifiEnabled()){
			wifiManager.setWifiEnabled(true);
		}
		
		WifiInfo wifiInfo = wifiManager.getConnectionInfo();
		String address = "type: WIFI\nIP地址: " + intIP2String(wifiInfo.getIpAddress()) + "\nMAC地址:" + wifiInfo.getMacAddress();
		return address;
	}
	
	private String intIP2String(int ip){
		return (ip & 0xFF) + "." + ((ip >> 8) & 0xFF) + "." + ((ip >> 16) & 0xFF) + "." + ((ip >> 24) & 0xFF);
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 

分享到:
评论

相关推荐

    android 手机获取公网的IP地址

    网上找了下,好像这方面的代码比较少,而且大部分都不可用,所以自己写了一个小工具,可以获得外网的IP、城市等信息。... testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }

    android获取公网ip地址 IPUtil.java

    通过异步任务来获取当前用户的ip地址,使用的时候调用getRemoteIP方法就可以,需要传一个可以获取公网ip的url地址,这个百多很多,比如,搜狐,淘宝之类的都有,同时还有一个超时的任务,具体看代码了

    获取android设备的内网IP地址

    获取IP地址通常需要`ACCESS_NETWORK_STATE`和`INTERNET`权限。前者允许应用查询网络状态,后者则允许应用打开网络套接字。 2. **WiFiManager和ConnectivityManager**:这两个是Android提供的用于管理网络连接的重要...

    android_获取手机上网ip地址demo

    1. **检查网络状态**:在获取IP地址之前,需要确认设备已经连接到网络。可以使用`ConnectivityManager`来检查网络连接的状态。例如: ```java ConnectivityManager connectivityManager = (ConnectivityManager) ...

    android手机获取上网的ip地址

    首先,我们要了解Android系统中获取IP地址的基本方法。在Android中,可以通过网络相关的API来获取IP信息。主要有以下两种方式: 1. **使用`InetAddress`类**: `InetAddress`是Java的网络编程基础类,提供了获取IP...

    Android开发准确获取手机IP地址的两种方式

    因此,在获取IP地址时,需要进行格式转换。 通过ConnectivityManager判断网络环境、getLocalIpAddress()获取本地IP地址和intToIp()获取WI-FI IP地址,这三种方式可以帮助我们准确获取手机IP地址,满足微信支付等...

    android 获取手机ip地址

    因此,获取IP地址时,我们通常关注的是对外可用的那个IP,通常是Wi-Fi或移动数据连接的IPv4地址。 以下是获取手机IP地址的一种常见方法,利用Java的`java.net.NetworkInterface`和`java.net.InetAddress`类: ```...

    Android_获取手机IP和MAC地址

    在Android应用中获取IP地址,我们主要依赖于网络连接的状态。以下是一段简单的代码示例,展示了如何获取设备的IPv4地址: ```java public String getLocalIpAddress() { try { for (Enumeration...

    Android获取实时连接热点的设备IP

    Android获取实时连接热点的设备IP是指在Android系统中获取当前热点连接的设备IP地址的相关技术。主要涉及到Android系统中获取Wifi热点设备的Ip地址的代码实现。 知识点一:/proc/net/arp文件 在Android系统中,...

    Android获取手机ip地址及mac地址

    ### 二、获取IP地址 IP地址用于在网络层标识设备,分为IPv4和IPv6两种类型。在Android中,可以遍历所有网络接口,从中筛选出非回环地址,从而获取到设备的真实IP地址。 #### 代码解析: ```java public static ...

    android 获取本机wifi连接ip

    首先,我们需要了解Android系统中获取IP地址的基本方法。通常,我们可以使用`ConnectivityManager`和`WifiManager`这两个系统服务来获取相关信息。`ConnectivityManager`用于管理网络连接,而`WifiManager`则专门...

    android 获取本机的IP地址和mac物理地址的实现方法

    以下是一个示例函数,它返回本机的IP地址: ```java public String getLocalIpAddress() { WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = ...

    Android开发获取手机内网IP地址与外网IP地址的详细方法与源码实例

    Android开发获取手机内网IP地址与外网IP地址的方法与源码实例 Android开发中,获取手机内网IP地址和外网IP地址是非常重要的技术点,对于Android应用开发者来说,获取当前Android设备所使用的网络IP地址的场景是...

    获取手机ip

    对于应用程序开发者而言,获取IP地址主要通过编程接口,例如Android中的`java.net.InetAddress`类。 在Android应用中,获取手机IP地址可以通过以下步骤实现: 1. **权限请求**: 在AndroidManifest.xml中添加`...

    android获取wifi的IP,子网掩码,网关,dns等信息

    1. 获取IP地址: Android提供了一个名为`WifiManager`的系统服务,通过它我们可以获取到连接的WiFi网络的IP地址。首先,你需要在AndroidManifest.xml中添加`ACCESS_WIFI_STATE`权限: ```xml &lt;uses-permission ...

    获取连接手机热点设备的IP地址

    3. **获取IP地址**:在有设备连接后,`DhcpInfo`对象会包含一个`ipAddress`字段,它以整数形式表示IP地址。为了将其转换为人类可读的字符串形式,可以使用`inetAddress(int)`函数,或者直接进行位操作。例如,`(ip...

    android DHCP获取IP失败分析解决.pdf

    然而,在某些情况下,Android 设备可能无法通过 DHCP 获取 IP 地址,导致连接 Wi-Fi 网络失败。本文将对 Android 中 DHCP 获取 IP 失败的原因和解决方法进行分析。 一、Android 中 DHCP 获取 IP 的流程 在 Android...

    获取手机所处的网络IP地址

    获取手机所处网络的IP地址。WIFI联网是可获得外网和各层路由得IP地址

    Android 判断网络是否可用 & 获取IP地址 & 获取以太网口MAC地址

    判断网络是否可用: 注意!是判断网络是否可用,但网络可用不代表一定能上外网的! public static boolean isNetworkAvailable(Context context) { ConnectivityManager manager = (ConnectivityManager) context...

    Android-wifi下获取ip地址

    在Android中,获取IP地址通常涉及以下几个关键步骤: 1. **权限声明**:在AndroidManifest.xml文件中,你需要添加`ACCESS_WIFI_STATE`权限,这样你的应用才能访问WiFi的状态信息: ```xml &lt;uses-permission ...

Global site tag (gtag.js) - Google Analytics