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

조회수 5302회

와이파이 연결이 안됐을때 뭔갈 다운받지 못하게 하고싶은데 제가 할 줄 아는건 와이파이가 사용 가능할때 사용가능하다고 하는것밖에 못해요. 무슨 말이냐면 와이파이가 가능하게만하고 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;
        }

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

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)를 쓰시기 바랍니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)