네트워크 체크 할때 wifi , mobile (3g , lte ...)를 구분지어서 체크 하려고 하는데

3G , 4G,  LTE 서비스가 불가능한 버전에서는 mobile network 확인 부분에서  NullPointer Error 가발생되는군요

따라서 wifi 를 먼저 체크 하고 mobile 을 그다음에 체크 한다음에 사용하는게 올바른 체크 방법인듯 합니다.

try ~ catch 로 예외처리도 해 놓으니 그럭저럭 쓸만해서 공유합니다.


private static boolean isOnline() { // network 연결 상태 확인

try {

ConnectivityManager conMan = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);


State wifi = conMan.getNetworkInfo(1).getState(); // wifi

if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {

return true;

}


State mobile = conMan.getNetworkInfo(0).getState(); // mobile ConnectivityManager.TYPE_MOBILE

if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {

return true;

}


catch (NullPointerException e) {

return false;

}


return false;

}