안드로이드에서 와이파이 연결됐는지 확인하는 법


와이파이 연결이 안됐을때 뭔갈 다운받지 못하게 하고싶은데 제가 할 줄 아는건 와이파이가 사용 가능할때 사용가능하다고 하는것밖에 못해요. 무슨 말이냐면 와이파이가 가능하게만하고 3G를 사용하고 있을수도 있잖아요.

와이파이가 연결 됐는지 체크하는건 어떻게 하나요?

android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if( state != NetworkInfo.DetailedState.CONNECTED ){
            return false;
        }

이 소스는 제가 기대한것처럼 되지 않아요. 와이파이가 이미 연결돼있어도 아이피주소받아오는중인 상태라고만 나오거든요.. 어떻게 해야할까요?

  • 2016년 05월 27일에 작성됨

조회수 383


1 답변


좋아요
0
싫어요
채택취소하기

ConnectivityManager를 쓰시면 wifi 어댑터에서 상태를 얻어올수있습니다. 그러면 와이파이가 연결됐는지와 지금 와이파이가 사용가능한지도 받을수있습니다.

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mWifi.isConnected()) {
    // Do whatever
}

주의할점: 안드로이드 매니패스트 파일에 아래처럼 퍼미션을 추가해주셔야됩니다.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

주의할점 2: public NetworkInfo getNetworkInfo (int networkType) 는 현재는 deprecated 됐습니다.

    This method was deprecated in API level 23. This method does not support multiple connected networks of the same type. Use getAllNetworks() and getNetworkInfo(android.net.Network) instead.

API23 부터 deprecated됐기때문에 getAllNetworks()와 getNetworkInfo(android.net.Network)를 쓰시기 바랍니다.

  • 2016년 05월 28일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close