오늘로 두 번째 글이다.
오늘 배운 것 중에 유용한 녀석 중 하나였다.
간단하게 설명하면,
네트워크가 켜져있는지 안 켜져 있는지 정보를 얻고,
그에 맞게 실행할 수 있다.
ConnectivityManager connManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getActivityNetworkInfo();
if (networkInfo != null ) {
if (networkInfo.geType() == ConnectivityManager.TYPE_WIFI) {
// Wi-Fi일때 작업
} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
// 3G, LTE...
}
} else {
//데이터가 터지지 않을때,
}
출처: https://effectivecode.tistory.com/841 [Mr.후]
이런식으로 사용할 수 있다.
그런데 메서드를 실행해보니, networkInfo함수가
API 29이상 부터 사용이 되지 않는다고 한다.
물론 분기 처리하면 되지만, 뭔가 찝찝했다.
그래서 해결책을 알아냈다.
ConnectivityManager connManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //23버전부터 사용가능
Network network = connManager.getActiveNetwork();
if(network == null){ //인터넷 연결이 안되어있으면,
//값실행
}
}
이런 식으로 network값을 가져와서 사용하면 된다.
이제 실행을 해보면,
데이터나 wifi를 틀지 않고 들어가면,
저 안에 값이 실행된다.
network!= null이라고 치면,
그 반대로 데이터가 터진 상태에서 들어갈 때,
실행될 값을 입력할 수 있다.