2013-06-10 4 views
1

스위치 위젯을 사용하여 장치의 데이터 연결을 활성화/비활성화하는 안드로이드 응용 프로그램을 만듭니다.데이터 연결이 "체크"되어 있는지 확인하십시오.

내 문제는 실제로 데이터 로밍입니다. 사용자가 데이터 연결 로밍을 사용 중지 한 경우 NetworkInfo.isConnectedOrConnecting() 또는 TelephoneManager.getDataState()과 같은 API 메소드는 연결이 꺼져 있다고 말할 것입니다.

일반적으로 이것은 사실이지만 내 컴퓨터 환경에서는 데이터 연결이의 "ticked"이면 입니다.

그래서 데이터 연결에 사용/사용 중/사용 중지 대신 확인 표시가 가능한 방법이 필요합니다.

아이디어가 있으십니까?

답변

3

시스템이 로컬 데이터 연결 확인란/스위치의 상태를 저장합니다 "mobile_data"행 이름, 정의 :

private static final String MOBILE_DATA = "mobile_data"; 

을 그리고 그 행의 값이 0인지 아닌지 확인한다. 0 인 경우 데이터 연결이 선택 취소/사용 중지되었습니다 (선택 안함) :

private boolean isMobileDataChecked() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     // The row has been moved to 'global' table in API level 17 
     return Settings.Global.getInt(getContentResolver(), MOBILE_DATA, 0) != 0; 
    } 

    try { 
     // It was in 'secure' table before 
     int enabled = Settings.Secure.getInt(getContentResolver(), MOBILE_DATA); 
     return enabled != 0; 
    } catch (SettingNotFoundException e) { 
     // It was in 'system' table originally, but I don't remember when that was the case. 
     // So, probably, you won't need all these try/catches. 
     // But, hey, it is better to be safe than sorry :) 
     return Settings.System.getInt(getContentResolver(), MOBILE_DATA, 0) != 0; 
    } 
}