Android学习之获得ip地址

本文介绍了一种在Android应用程序中获取设备IP地址的方法。通过使用Wi-Fi服务和网络接口,该方法能够检测Wi-Fi是否开启,并从Wi-Fi连接信息中获取内部IP地址,同时也能获取非回环外部IP地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package cn.net;

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

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

public class IpUtil extends Activity {
    /** Called when the activity is first created. */
    @Override

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            //获取wifi服务
            WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            //判断wifi是否开启
            if (!wifiManager.isWifiEnabled()) { 
            wifiManager.setWifiEnabled(true);   
            } 
            //使用wifi获得有问题,可能要真机测试
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();      
            int ipAddress = wifiInfo.getIpAddress();  
            String ip = intToIp(ipAddress);  
            EditText et = (EditText)findViewById(R.id.EditText01);
            EditText e2=(EditText)findViewById(R.id.editText2);
            String ip2=getLocalIpAddress();
            et.setText(ipAddress);
            e2.setText(ip2);
        }    
        //初始化为0.0.0.0
        private String intToIp(int i) {      
            
              return (i & 0xFF ) + "." +      
            ((i >> 8 ) & 0xFF) + "." +      
            ((i >> 16 ) & 0xFF) + "." +      
            ( i >> 24 & 0xFF) ;
         }  



    //这个可用,
    public String getLocalIpAddress() 
        { 
            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()) 
                       { 
                           return inetAddress.getHostAddress().toString(); 
                       } 
                   } 
               } 
            } 
            catch (SocketException ex) 
            { 
                Log.e("WifiPreference IpAddress", ex.toString()); 
            } 
            return null; 
        }

     

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值