개발 이야기/android
안드로이드 네트워크 연결상태 확인
Bourbonkk
2019. 8. 27. 00:32
오늘은 안드로이드의 네트워크 연결 상태를 확인하는 로직을 구현해 볼게요!
엄청나게 간단합니다!
일단 권한 설정부터!
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
와이파이 상태 확인 권한과 네트워크 상태 확인 권한이 필요해요!
그리고 사용방법에 따라 기획 방법에 따라
조금씩! 다르게 코딩을 할텐데요!
가장 기초적으로
연결 됐으면! true!
안됬으면! false!
static Boolean isConnected(Context context) {
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
return ni != null && ni.isConnected();
}
자 이렇게 코드를 넣어주면 연결됐으면 true!
아닌 경우 false를 리턴해주겠죠!
인터넷 연결이 안 된 경우 토스트를 날려주거나 해도 되겠죠?
자. 그럼 이런 경우도 있죠
WIFI연결 시에만 다운로드하도록 설정
혹은 WIFI연결 시에만 다운로드됨
이런 식으로 기획된 아이들은 조금 다르게 로직을 짜야하는데요
static int isConnected(Context context) {
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null && ni.isConnected()) {
if (ni.getType() == ConnectivityManager.TYPE_MOBILE) {
// 3g,4g 인 경우
return 1;
} else if (ni.getType() == ConnectivityManager.TYPE_WIFI) {
// WIFI인 경우
return 2;
}
}
// 연결 안됨
return 0;
}
Boolean 자료형은 참/거짓 두 가지밖에 표현이 안되어서
int 자료형으로 변경하고 세 가지 리턴으로 나누었습니다!
이제 이 것을 응용해서 리퀘스트 보내는 곳마다 확인을 해주면 좋을 거 같아요!
인터넷이 연결되지 않은 경우!
토스트로 간단하게
"인터넷 연결이 되어있지 않습니다"
같은 문구를 날려주면 좋을 것 같아요!