마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

넥서스 7, 갤럭시 노트 8 타블렛에서의 getNetworkInfo 관련 문의 드립니다.

0 추천

 

안녕하세요. 한참 안드로이드를 배우고 있는 초보자 입니다.
 
이번에 WiFi 연동 개발 중인데요,  Nexus One, 갤럭시 S4, 갤럭시 Note 2 등에서는 아무 문제 없이 WiFi 를 체크하고 ip 를 가지고 오는데요, 넥서스 7 타블릿, 갤럭시 노트 8 타블릿 등에서는 아래 부분에서 작동이 되지 않네요.
 
한참 개발하면서 문제 없다고 했는데, 이거 타블릿에서만 이런 동일 현상이 보여서 난감한 상태입니다.
 
1. 아래는 해당하는 코드 부분입니다.
 
connetmanager = (ConnectivityManager) m_context.getSystemService(Context.CONNECTIVITY_SERVICE);
Toast.makeText(ANE_CONTEXT, "connetmanager : " + connetmanager, Toast.LENGTH_LONG).show();
 
// 3G 체크 - 이부분에서 Exception 이 발생합니다.
 
is3g = connetmanager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
Toast.makeText(ANE_CONTEXT, "is3g : " + is3g, Toast.LENGTH_LONG).show();
 
// WIFI 체크
isWifi = connetmanager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
Toast.makeText(ANE_CONTEXT, "isWifi : " + isWifi, Toast.LENGTH_LONG).show();
 
2. DDMS 로 출력해 보니까 아래 처럼 나옵니다. 구글링에서도 답이 없는 거 같아서 참.. 골치가 아프고 힘드네요. ^--:"
 
E / WifiP2pStateTracker(2056): getNetworkInfo : NetworkInfo: type: WIFI_P2P[], state: UNKNOWN/IDLE, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
 
참고로 퍼미션은 준 상태입니다. 
 
바쁘시겠지만 좋은 의견 있으시면 부탁드립니다.
 
여기는 대구인데요, 오늘 날씨가 장난이 아니네요. 바로 여름입니다. ㅠㅠ
 
그럼 건강들 하시구요. ^^
 
읽어주셔서 감사합니다. ^^
 
 
 
익명사용자 님이 2013년 5월 24일 질문

1개의 답변

0 추천
3G 연결이 안된 단말에서는  connetmanager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) 가 null을 반환할 텐데.. null 체크는 하신 건가요?
 
익명사용자 님이 2013년 5월 24일 답변
안녕하세요. 먼저 답변을 주셔서 감사말씀드립니다.

현재 null 체크는 하지 않고 있는데요, 혹시 예외처리를 진행하여야 하는지를 잘 모르겠습니다. 현재는 3G와 WiFi 가 연결된다면 true 로 변수값을 세팅하는 형태로 하였습니다.

public String getLocalIpAddress(Context contextValue) // IP 정보 찾기
{       
    Context m_context = contextValue;
    final String IP_NONE = "N/A";
    String LocalIP = IP_NONE;   
               
    connetmanager = (ConnectivityManager) m_context.getSystemService(Context.CONNECTIVITY_SERVICE);
    is3g = false;
    isWifi = false;
       
    // 3G 체크
    is3g = connetmanager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
    // WIFI 체크
    isWifi = connetmanager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
    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()) {
                        if (LocalIP.equals(IP_NONE)) {
                            LocalIP = inetAddress.getHostAddress().toString();
                        } else if (intf.getDisplayName().contains("eth")
                                || intf.getDisplayName().contains("wlan")) {
                            LocalIP = inetAddress.getHostAddress().toString();
                        }

                    }
                }
            }
        } catch (SocketException ex) {
            Log.e("ERROR", ex.toString());
        }
        return LocalIP;   
    }
...