ConnectivityManager의 getNetworkInfo가 depreacted 되었다.
물론 좀 된 얘기지만..
아무튼 그래서 네트워크 연결 상태를 확인하는 코드를 다음과 같이 구현하였다.
public boolean isNetWorkAvailable(Context context) {
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // Q 이상은 이렇게 대응 해야함
NetworkCapabilities networkType = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (networkType != null) {
return networkType.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
networkType.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
networkType.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
}
} else {
NetworkInfo exOsNetworkInfo = connectivityManager.getActiveNetworkInfo(); // Q 미만은 여기로
if (exOsNetworkInfo != null) {
return (exOsNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) ||
(exOsNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) ||
(exOsNetworkInfo.getType() == ConnectivityManager.TYPE_ETHERNET);
}
}
} catch (Exception e) {
return false;
}
return false;
}
OS 별로 대응도 가능 하도록 구현했고 WIFI, CELLULAR 그리고 진짜 간혹 이더넷;; 까지 대응할 수 있도록 구현했다..
아래처럼 구현해도 되는 듯
public boolean isNetWorkAvailable(Context context) {
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkCapabilities networkType = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (networkType != null) {
return networkType.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
networkType.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
networkType.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
'Android > Technic' 카테고리의 다른 글
범위지정저장소에서 다운로드 구현 시 고려해볼 점 (쓰다 말음..) (0) | 2021.11.15 |
---|---|
Handler의 Deprecated 대응 (0) | 2021.11.08 |
ViewPager2의 swipe listener (Call back) (0) | 2021.11.05 |
BottomNavigationView + ViewPager2에서 swipe 안되게 하기 (0) | 2021.11.05 |
ViewPager2(FragmentStateAdapter)에서 화면이 reload되는 현상 해결법 (ViewPager2 + FragmentStateAdapter + BottomNavigationView) (0) | 2021.11.05 |
댓글