2013-10-28 58 views
16

ACCESS_NETWORK_STATE和INTERNET有什麼區別?ACCESS_NETWORK_STATE和INTERNET有什麼區別?

如果我使用INTERNET,是否需要使用ACCESS_NETWORK_STATE?

換句話說,我可以使用INTERNET而不使用ACCESS_NETWORK_STATE嗎?

+5

[INTERNET](http://developer.android.com/reference/android/Manifest.permission.html#INTERNET)和[ACCESS_NETWORK_STATE](http://developer.android.com/reference/android/Manifest。 permission.html#ACCESS_NETWORK_STATE) – dymmeh

回答

23

the documentation

ACCESS_NETWORK_STATE

允許應用程序訪問有關GSM網絡

INTERNET信息:

允許應用程序打開網絡套接字。

總之,INTERNET許可,您可以使用互聯網,而ACCESS_NETWORK_STATE只會向您提供有關網絡,如是否連接到網絡的。

你可以使用任何一個而不需要其他的。如果您在嘗試使用Internet之前沒有檢查您是否擁有有效的網絡連接,那麼您的HTTP請求將會失敗。

+0

是的,但是如果我打開網絡套接字,當然我需要檢查是否有互聯網連接,不是嗎? – Mageek

+1

@Mageek你不必檢查是否有連接,如果沒有請求將失敗或任何 – tyczj

+0

謝謝,這是我的答案,你可以將它添加到你的答案,我會接受它 – Mageek

2

INTERNET允許你使用互聯網

ACCESS_NETWORK_STATE讓您獲得網絡(WIFI,3G,4G)的狀態,你也可以檢查網絡連接或不

如果有沒有互聯網的HTTP請求將失敗,你會得到某種異常,你將不得不處理

6
android.permission.INTERNET 

如果您只是想使用互聯網(連接到Web服務或在webView上顯示網頁)就足夠了。

android.permission.ACCESS_NETWORK_STATE 

在使用互聯網之前查詢網絡狀態是「很好」。

+0

你*有*查詢網絡狀態嗎?捕獲HTTP請求失敗時拋出的異常不夠嗎? –

+2

不,您不必查詢網絡狀態。 ACCESS_NETWORK使用案例:在您的應用程序中,您希望上傳/下載大量數據,並且您更願意在用戶通過Wi-Fi連接(您不想花費用戶移動數據包)時執行此操作,您可以查詢連接擁有此權限的狀態。 – Devrim