Android 는 Connectivity Manager 를 통 해 네트워크 상 태 를 검사 합 니 다.
Connectivity Manager 는 네 가지 주요 임무 가 있 습 니 다.
1.휴대 전화 네트워크 상태(GPRS,WIFI,UMTS 등 포함)감청
2.휴대폰 상태 변경 시 방송 발송
3.네트워크 연결 실패 시 고장 전환
4.응용 프로그램 에 사용 가능 한 네트워크 의 높 은 정밀도 와 거 친 상 태 를 제공 합 니 다.프로그램 에서 네트워크 상 태 를 감청 하려 면 몇 가지 절차 만 거치 면 됩 니 다.
1.Receiver 가 다시 불 러 오 는 onReceive 함 수 를 정의 합 니 다.와 이 파이 와 GPRS 가 끊 어 졌 는 지 여부 에 따라 공간의 외관 을 바 꾸 는 등 필요 한 기능 을 수행 합 니 다.
connectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
Log.i(TAG, "unconnect");
// unconnect network
}else {
// connect network
}
}
};
2.적당 한 곳 에 Receiver 를 등록 하면 프로그램 에 등록 할 수 있 고 onCreate 에서 다음 과 같은 함 수 를 호출 하면 됩 니 다.
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connectionReceiver, intentFilter);
3.적당 한 시기 에 Receiver 등록 을 취소 하면 프로그램 에서 취소 할 수 있 습 니 다.onDestroye 에서 다음 과 같은 함 수 를 호출 하면 됩 니 다.
if (connectionReceiver != null) {
unregisterReceiver(connectionReceiver);
}
Ps:인터넷 에는 Telephony Manager 를 사용 하 는 방법 에 관 한 방법 도 많 습 니 다.방법 은 다음 과 같 습 니 다.(하지만 여러 번 시도 해 봤 는데 문제 가 있 습 니 다.예 를 들 어 Activity 에 처음 들 어 갈 때마다 네트워크 가 끊 긴 신 호 를 자동 으로 받 습 니 다.네트워크 상태 가 바 뀔 때마다 여러 번 리 셋 을 받 고 상태 가 정확 하지 않 습 니 다.뭐 공부 해요?
final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyMgr.listen(new PhoneStateListener(){
@Override
public void onDataConnectionStateChanged(int state) {
switch(state){
case TelephonyManager.DATA_DISCONNECTED://
break;
case TelephonyManager.DATA_CONNECTING://
break;
case TelephonyManager.DATA_CONNECTED://
break;
}
}
}, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
두 번 째 방법 에 대해 서 는 본인 이 시도 해 본 적 이 없다.첫 번 째 방법 은 프로그램 이 배경 에 숨 어 있 으 려 면 서 비 스 를 열 어 BroadcastReceiver 를 service 에 등록 하 는 것 을 권장 하지만 등록 취 소 를 잊 지 마 세 요.테스트 에서 이러한 상황 을 만 났 습 니 다.현재 와 이 파 이 를 연결 하 는 경로 장 치 를 닫 았 지만 프로그램 은 unconnect network 를 포착 하지 못 했 습 니 다.아마도 핸드폰 장치 가 바로 다른 경로 장 치 를 연결 하기 때 문 일 것 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.