반응형

네트워크 연결상태 콜백

  • 안드로이드 6.0 이상부터 사용가능

 

NetworkCallback Function

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    final ConnectivityManager cm = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkRequest.Builder builder = new NetworkRequest.Builder();
    cm.registerNetworkCallback(
            builder.build(),
            new ConnectivityManager.NetworkCallback() {
                @Override
                public void onAvailable(Network network) {
                    int connectionState = -1;
                    Network nw = cm.getActiveNetwork();
                    if(nw != null) {
                        NetworkCapabilities actNw = cm.getNetworkCapabilities(nw);
                        if(actNw != null) {
                            if(actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                                connectionState = NetworkCapabilities.TRANSPORT_WIFI;
                            } else if(actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                                connectionState = NetworkCapabilities.TRANSPORT_CELLULAR;
                            } else if(actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
                                connectionState = NetworkCapabilities.TRANSPORT_ETHERNET;
                            } else if(actNw.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH)) {
                                connectionState = NetworkCapabilities.TRANSPORT_BLUETOOTH;
                            } else {
                                connectionState = 9;
                            }
                        }
                    }
 
                    if(connectionState >= 0) {
                        String msg = "[연결됨] ";
                        if(connectionState == NetworkCapabilities.TRANSPORT_WIFI) msg += "WIFI";
                        else if(connectionState == NetworkCapabilities.TRANSPORT_CELLULAR) msg += "CELLULAR";
                        else if(connectionState == NetworkCapabilities.TRANSPORT_ETHERNET) msg += "ETHERNET";
                        else if(connectionState == NetworkCapabilities.TRANSPORT_BLUETOOTH) msg += "BLUETOOTH";
                        else msg += "기타";
                        Toast.makeText(EBZSMMainActivity.this, msg, Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(EBZSMMainActivity.this, "[연결됨] 체크오류발생!!", Toast.LENGTH_SHORT).show();
                    }
                }
 
                @Override
                public void onLost(Network network) {
                    //네트워크 끊어짐
                    Toast.makeText(EBZSMMainActivity.this, "[끈어짐]", Toast.LENGTH_SHORT).show();
                }
            }
    );
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기