Android 는 Connectivity Manager 를 통 해 네트워크 상 태 를 검사 합 니 다.

안 드 로 이 드 애플 리 케 이 션 을 개발 할 때 네트워크 접근 과 관련 하여 네트워크 상 태 를 검사 하여 사용자 에 게 필요 한 알림 을 제공 해 야 합 니 다.일반적으로 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 를 포착 하지 못 했 습 니 다.아마도 핸드폰 장치 가 바로 다른 경로 장 치 를 연결 하기 때 문 일 것 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기