- 전체
- android studio
- Android SDK
- Android NDK
- Android ADK
- Android Etc. Lib.
- Android dalvik VM
- Android 보안
- PhoneGap
- AOSP 개발
- MIT App Inventor 2
- kivy (python)
- ionic framework
- Kotlin (코틀린)
- React Native
Android SDK [Android SDK] [안드로이드/Android] 기기 네트워크 연결 상태 확인
2024.05.01 17:30
[Android SDK] [안드로이드/Android] 기기 네트워크 연결 상태 확인
앱 내에서 네트워크 연결을 확인해야 할 상황이 많이 있다.
예를 들어 실시간 방송 중 네트워크가 끊겼다면?, 채팅을 보낼 때 인터넷이 연결이 안 되는 상황이면? 등등
사용자가 네트워크에 연결이 됐는지 안 됐는지,
연결이 됐다면 와이파이인지 셀룰러 통신(3G, LTE, 5G)을 사용하고 있는지를 알기 위한 코드이다.
* 셀룰러 통신 : 주파수 자원을 효율적으로 활용해 기지국을 공간적으로 확장하는 이동통신
- 네트워크 연결 상태를 토스트 메세지로 띄우도록 한 결과 화면입니다.



- 메니페스트 파일
네트워크 상태 접근하기 위한 권한 추가
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 네트워크 연결 확인 java 코드
public void getConnectivityStatus(Context context) {
// 네트워크 연결 상태 확인하기 위한 ConnectivityManager 객체 생성
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
// 기기가 마시멜로우 버전인 Andorid 6 이상인 경우
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
// 활성화된 네트워크의 상태를 표현하는 객체
NetworkCapabilities nc = cm.getNetworkCapabilities(cm.getActiveNetwork());
if (nc != null) {
if (nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
Toast.makeText(context, "와이파이 연결됨", Toast.LENGTH_SHORT).show();
} else if (nc.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
Toast.makeText(context, "셀룰러 통신 사용", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(context, "인터넷 연결 안됨", Toast.LENGTH_SHORT).show();
}
} else {
// 기기 버전이 마시멜로우 버전보다 아래인 경우
// getActiveNetworkInfo -> API level 29에 디플리케이트 됨
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) {
// 연결된 네트워크 확인
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
Toast.makeText(context, "와이파이 연결됨", Toast.LENGTH_SHORT).show();
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
Toast.makeText(context, "셀룰러 통신 사용", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(context, "인터넷 연결 안됨", Toast.LENGTH_SHORT).show();
}
}
}
}
- 특이사항
네트워크 연결 여부 정보를 가져오기 위한 Networkinfo 클래스의 getActiveNetworkInfo()는 API 29에서 deprecated 됐습니다.
마시멜로우 버전 이상일 경우, 이하일 경우 네트워크 연결 확인하는 방법이 다름
- 참고
https://developer.android.com/training/monitoring-device-state/connectivity-status-type
http://www.ktword.co.kr/abbr_view.php?m_temp1=472
[출처] https://develop-writing.tistory.com/1
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 9 |
android webview로 javascript 호출 및 이벤트 받기(연동하기)
| 졸리운_곰 | 2018.03.19 | 1405 |
| 8 |
지니모션 설치 방법 총정리 (한글키보드 + 구글플레이 설치)
| 졸리운_곰 | 2016.04.23 | 1065 |
| 7 |
Flurry를 사용해보자, Flurry란 무엇인가? Flurry를 이용한 어플 사용자 통계분석하기
| 졸리운_곰 | 2014.12.01 | 505 |
| 6 |
Howto Build Android KitKat (4.4) for the Google Nexus 5December 1, 2013
| 졸리운_곰 | 2014.01.23 | 6573 |
| 5 |
넥서스5 소스 빌드 : Nexus5 Source build
| 가을의 곰을... | 2013.12.20 | 10608 |
| 4 | Samsung Galaxy 안드로이드 커널 빌드 | 가을의 곰을... | 2013.12.12 | 12418 |
| 3 |
넥서스7 소스 빌드 방법
| 가을의 곰을... | 2013.12.12 | 9886 |
| 2 |
안드로이드 플랫폼 개발 (한글)
| 가을의 곰을... | 2013.12.07 | 10780 |
| 1 | 안드로이드 플랫폼 개발 | 가을의 곰을... | 2013.11.17 | 10563 |

