3g on/off에 대한 팁이 없는것 같아서, 하나 올립니다.
저 또한 이기능을 구현할 일이 있어서 검색을 해보니 참고할 자료가 없더군요.
그래서 그냥 만들어봤습니다. 문제가 있으면 리플달아주세요!
우선 개발하시는 패키지에 아래의 패키지를 만듭니다.
com.android.internal.telephony
위에 만든 패키지에 첨부한 ITelephony.aidl을 추가합니다.
com.android.internal.telephony
|
+--> ITelephony.aidl
public void TelephonyAidl(Context context, boolean dataconnectivity) throws Exception {
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
@SuppressWarnings("rawtypes")
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService;
telephonyService = (ITelephony)m.invoke(tm);

if(dataconnectivity) {
telephonyService.enableDataConnectivity();
} else {
telephonyService.disableDataConnectivity();
}
}
위 코드의 인자 dataconnectivity에 true/false(on/off) 로 3g의 허용과 차단을 할수 있습니다.
또한, 설정->무선및네트웍크->데이터 네트워크 설정
에서 설정값에 대한 모니터링할 이벤트 리스너를 등록하고(TelephonyManager를 통해서)
리스너에서 onDataConnectionStateChanged 를 통해서 상태변화에 대한 적절한 대응을 처리하면 됩니다.
메니페스트 퍼미션은
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
두개 추가해주시고요
위 관련사항에 대해서 고민하시는 분들 참고하세요!