Android 獲取 IP 地址

開發(fā)中經(jīng)常會需要判斷當(dāng)前是否連接網(wǎng)絡(luò), WiFi 或 移動數(shù)據(jù)連接判斷的需求,

**第一種方法: **

  WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);  
  WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
  int ipAddress = wifiInfo.getIpAddress();  

通過這種方式獲取到的 IP 地址為一串?dāng)?shù)字,我們并不能看懂,因此我們需要通過下面的方法進(jìn)行轉(zhuǎn)換:

String ip = (ipAddress & 0xff) + "." + (ipAddress>>8 & 0xff) + "." + (ipAddress>>16 & 0xff) + "." + (ipAddress >> 24 & 0xff);

這樣轉(zhuǎn)換之后,我們獲取到的 IP 地址就是我們平時認(rèn)識的, 比如: 192.168.1.108

這種方法在飛行模式下獲取到的 IP 地址為 0.0.0.0

第二種方法:

  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(LOG_TAG, ex.toString());  
    }  
    return null;  
}  

第二種方式是比較通用的,在WiFi和3G/4G 狀態(tài)下,都可以獲取到正確的地址.比如: fe80::8e3a:e3ff:fe45:a018

這種方法在手機(jī)處于飛行狀態(tài)下時, 獲取到的 IP 地址為 null

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在wifi環(huán)境下使用wifiManager來獲取在移動網(wǎng)絡(luò)環(huán)境下使用NetworkInterface來獲取 歡迎指正
    陽翟后生閱讀 3,224評論 3 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,663評論 19 139
  • 名詞延伸 通俗的說,域名就相當(dāng)于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,818評論 2 56
  • 同樣的,本文篇幅也比較長,先來一張思維導(dǎo)圖,帶大家過一遍。 一、 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 二、 TCP/IP 基礎(chǔ)...
    滌生_Woo閱讀 66,168評論 38 1,037
  • 終于,我要為中國足球喝彩了! 1. 我不是一個足球迷,從來沒有看過一場完整的比賽,叫不出一個中國球星的名字,可我還...
    一起時尚去旅行閱讀 402評論 9 3

友情鏈接更多精彩內(nèi)容