2013-10-28 2 views
16

ACCESS_NETWORK_STATE와 INTERNET의 차이점은 무엇입니까?ACCESS_NETWORK_STATE와 INTERNET의 차이점은 무엇입니까?

인터넷을 사용하는 경우 ACCESS_NETWORK_STATE을 (를) 사용해야합니까?

즉, 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

을 처리해야합니다 예외의 일종 얻을 것이다 :

ACCESS_NETWORK_STATE :

응용 프로그램이 네트워크 소켓을 열 수 있습니다 :

응용 프로그램이 네트워크

INTERNET

정보에 액세스 할 수 있습니다. 한마디로

INTERNET 권한 ACCESS_NETWORK_STATE 단지 등이 모두 네트워크에 연결되어 있는지 여부로, 네트워크에 대해 당신에게 정보를 제공하는 반면, 당신은 인터넷을 사용할 수 있습니다.

다른 하나를 사용하지 않고도 둘 중 하나를 사용할 수 있습니다. 인터넷을 사용하기 전에 유효한 네트워크 연결이 있는지 확인하지 않으면 HTTP 요청이 단순히 실패합니다.

+0

예, 물론 네트워크 소켓을 열면 물론 인터넷에 연결되어 있는지 확인해야합니다. – Mageek

+1

@Mageek 연결이되어 있는지 확인하지 않아도됩니다. 요청이 실패하거나 아무렇지 않은 경우 – tyczj

+0

고마워요, 제 대답이었습니다. 대답에 그것을 추가 할 수 있습니까? 그것을 받아 들일 수 있습니까? – Mageek

2

인터넷이 있다면 당신은

네트워크가 연결되어있는 경우 또한 확인할 수 있습니다

ACCESS_NETWORK_STATE는 네트워크 (와이파이, 3g, 4g)의 상태를 얻을 수 있습니다 인터넷을 사용하거나하지 않을 수 있습니다 어떤 인터넷은 HTTP 요청은 실패하지 않습니다 그리고 당신은 당신이 the documentation에서

6
android.permission.INTERNET 

은 인터넷 (웹 서비스에 연결하거나 webView에서 웹 페이지 표시)을 사용하려는 경우 충분합니다.

android.permission.ACCESS_NETWORK_STATE 

은 인터넷을 사용하기 전에 네트워크 상태의 상태를 쿼리하는 것이 "좋은 것"입니다.

+0

네트워크 상태를 쿼리 할 * 있습니까? HTTP 요청이 실패 할 때 발생하는 예외를 잡는 것으로 충분하지 않습니까? –

+2

아니요 네트워크 상태를 쿼리 할 필요가 없습니다. ACCESS_NETWORK 사용 사례 : 애플리케이션에서 많은 양의 데이터를 업로드/다운로드하려는 경우 Wi-Fi를 통해 사용자가 연결되어있는 경우 (사용자가 모바일 데이터 패킷을 보내지 않으려는 경우) 연결을 쿼리 할 수 ​​있습니다 이 권한이있는 상태. – Devrim