【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址

這篇文章將為大家詳細(xì)講解有關(guān)Android開發(fā)如何獲取手機(jī)內(nèi)網(wǎng)IP地址與外網(wǎng)IP地址,在下覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國(guó)Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。在進(jìn)行Android應(yīng)用開發(fā)過程中,有時(shí)候會(huì)遇到獲取當(dāng)前Android設(shè)備所使用的網(wǎng)絡(luò)IP地址的場(chǎng)景,有時(shí)候需要本地的網(wǎng)絡(luò)IP地址,即局域網(wǎng)地址,更多的時(shí)候是需要當(dāng)前網(wǎng)絡(luò)的真實(shí)的對(duì)外IP地址,即真實(shí)的網(wǎng)絡(luò)地址,如大數(shù)據(jù)分析時(shí)往往需要Android設(shè)備上傳本地的外網(wǎng)地址。本文對(duì)各種IP地址的獲取進(jìn)行了總結(jié)。首先用大家比較熟悉的電腦端局域網(wǎng)地址和外網(wǎng)地址的獲取方式對(duì)比一下:(1)、電腦端局域網(wǎng)地址獲取方式,可以通過在終端命令行輸入ipconfig進(jìn)行查看,如下圖IPv地址標(biāo)識(shí)的就是本機(jī)的局域網(wǎng)地址:(2)、電腦端外網(wǎng)地址的獲取方式,可以通過在瀏覽器里面查詢,如在百度頁面搜索“IP地址查詢”查看本地外網(wǎng)地址,如下圖是筆者本機(jī)的外網(wǎng)地址:本地IP地址有兩種情況:一是wifi下,二是移動(dòng)網(wǎng)絡(luò)下wifi下獲取本地局域網(wǎng)IP地址//

wifi下獲取本地網(wǎng)絡(luò)IP地址(局域網(wǎng)地址)

public

static

String

getLocalIPAddress(Context

context)

{

WifiManager

wifiManager

=

(WifiManager)

context.getSystemService(Context.WIFI_SERVICE);

if

(wifiManager

!=

null)

{

@SuppressLint("MissingPermission")

WifiInfo

wifiInfo

=

wifiManager.getConnectionInfo();

String

ipAddress

=

intIP2StringIP(wifiInfo.getIpAddress());

return

ipAddress;

}

return

"";

}移動(dòng)網(wǎng)絡(luò)獲取網(wǎng)絡(luò)IP地址//

獲取有限網(wǎng)IP

public

static

String

getHostIp()

{

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();

}

}

}

}

catch

(Exception

ex)

{

}

return

"";

}獲取外網(wǎng)地址非移動(dòng)網(wǎng)絡(luò)獲取Android設(shè)備的外網(wǎng)地址,即當(dāng)前Wifi網(wǎng)絡(luò)真正的網(wǎng)絡(luò)地址,也即是網(wǎng)絡(luò)運(yùn)營(yíng)商分配給用戶的IP地址。獲取外網(wǎng)地址的原理:通過訪問外網(wǎng)網(wǎng)站,從網(wǎng)站返回的數(shù)據(jù)中解析本地的IP地址。PS:在本地是無法獲取到外網(wǎng)的IP地址的,需要借助服務(wù)器。/**

*

獲取外網(wǎng)ip地址(非本地局域網(wǎng)地址)的方法

*/

public

static

String

getOutNetIP()

{

String

ipAddress

=

"";

try

{

String

address

=

"/service/getIpInfo2.php?ip=myip";

URL

url

=

new

URL(address);

HttpURLConnection

connection

=

(HttpURLConnection)

url

.openConnection();

connection.setUseCaches(false);

connection.setRequestMethod("GET");

connection.setRequestProperty("user-agent",

"Mozilla/5.0

(Windows

NT

6.3;

WOW64)

AppleWebKit/537.36

(KHTML,

like

Gecko)

Chrome/51.0.2704.7

Safari/537.36");

//設(shè)置瀏覽器ua

保證不出現(xiàn)503

if

(connection.getResponseCode()

==

HttpURLConnection.HTTP_OK)

{

InputStream

in

=

connection.getInputStream();

//

將流轉(zhuǎn)化為字符串

BufferedReader

reader

=

new

BufferedReader(

new

InputStreamReader(in));

String

tmpString;

StringBuilder

retJSON

=

new

StringBuilder();

while

((tmpString

=

reader.readLine())

!=

null)

{

retJSON.append(tmpString

+

"\n");

}

JSONObject

jsonObject

=

new

JSONObject(retJSON.toString());

String

code

=

jsonObject.getString("code");

Log.e(TAG,

"提示:"

+retJSON.toString());

if

(code.equals("0"))

{

JSONObject

data

=

jsonObject.getJSONObject("data");

ipAddress

=

data.getString("ip")/*

+

"("

+

data.getString("country")

+

data.getString("area")

+

"區(qū)"

+

data.getString("region")

+

data.getString("city")

+

data.getString("isp")

+

")"*/;

Log.e(TAG,

"您的IP地址是:"

+

ipAddress);

}

else

{

Log.e(TAG,

"IP接口異常,無法獲取IP地址!");

}

}

else

{

Log.e(TAG,

"網(wǎng)絡(luò)連接異常,無法獲取IP地址!");

}

}

catch

(Exception

e)

{

Log.e(TAG,

"獲取IP地址時(shí)出現(xiàn)異常,異常信息是:"

+

e.toString());

}

return

ipAddress;

}根據(jù)網(wǎng)絡(luò)類型集成方法@SuppressLint("MissingPermission")

public

static

String

getIpAddress(Context

context)

{

if

(context

==

null)

{

return

"";

}

ConnectivityManager

conManager

=

(ConnectivityManager)

context

.getSystemService(Context.CONNECTIVITY_SERVICE);

try

{

NetworkInfo

info

=

conManager.getActiveNetworkInfo();

if

(info

!=

null

&&

info.isConnected())

{

//

3/4g網(wǎng)絡(luò)

if

(info.getType()

==

ConnectivityManager.TYPE_MOBILE)

{

return

getHostIp();

}

else

if

(info.getType()

==

ConnectivityManager.TYPE_WIFI)

{

//

return

getLocalIPAddress(context);

//

局域網(wǎng)地址

return

getOutNetIP();

//

外網(wǎng)地址

}

else

if

(info.getType()

==

ConnectivityManager.TYPE_ETHERNET)

{

//

以太網(wǎng)有限網(wǎng)絡(luò)

return

getHostIp();

}

}

}

catch

(Exception

e)

{

return

"";

}

return

"";

}下面在為大家提供兩個(gè)獲取手機(jī)IP地址的實(shí)例源碼獲取內(nèi)網(wǎng)IP地址

/**

*

獲取ip地址

*

@return

*/

public

static

String

getHostIP()

{

String

hostIp

=

null;

try

{

Enumeration

nis

=

NetworkInterface.getNetworkInterfaces();

InetAddress

ia

=

null;

while

(nis.hasMoreElements())

{

NetworkInterface

ni

=

(NetworkInterface)

nis.nextElement();

Enumeration<InetAddress>

ias

=

ni.getInetAddresses();

while

(ias.hasMoreElements())

{

ia

=

ias.nextElement();

if

(ia

instanceof

Inet6Address)

{

continue;//

skip

ipv6

}

String

ip

=

ia.getHostAddress();

if

(!"".equals(ip))

{

hostIp

=

ia.getHostAddress();

break;

}

}

}

}

catch

(SocketException

e)

{

Log.i("yao",

"SocketException");

e.printStackTrace();

}

return

hostIp;

}獲取外網(wǎng)IP地址/**

*

獲取IP地址

*

@return

*/

public

static

String

GetNetIp()

{

URL

infoUrl

=

null;

InputStream

inStream

=

null;

String

line

=

"";

try

{

infoUrl

=

new

URL("/cityjson?ie=utf-8");

URLConnection

connection

=

infoUrl.openConnection();

HttpURLConnection

httpConnection

=

(HttpURLConnection)

connection;

int

responseCode

=

httpConnection.getResponseCode();

if

(responseCode

==

HttpURLConnection.HTTP_OK)

{

inStream

=

httpConnection.getInputStream();

BufferedReader

reader

=

new

BufferedReader(new

InputStreamReader(inStream,

"utf-8"));

StringBuilder

strber

=

new

StringBuilder();

while

((line

=

reader.readLine())

!=

nu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論