2010-06-14 2 views
5

불행히도 바닐라 Android에서 프로그래밍 방식으로 데이터 연결 (GPRS/UMTS)을 감지 및 변경할 수 없으며 일반적인 해결 방법은 APN 설정을 편집하는 것입니다. 이것은 거의 좋은 해결책이 아닙니다.Android에서 프로그래밍 방식으로 데이터 연결 (GPRS/UMTS) 감지 및 변경

그러나 내 장치 (Xperia X10)에서는 "데이터 로밍"근처에서 MMS 및 데이터를 사용하거나 사용하지 않도록 설정할 수 있습니다. 나는 이것이 Sony Ericsson에 의해 만들어진 개인화라고 생각하고, 아마도 다른 벤더들조차도 이와 비슷한 것을 가지고있을 것이다. 이 설정에 액세스하는 방법이 있습니까?

+0

아니 표준 안드로이드 API를 통해 아니 –

+0

동의하지만, 질문에 나는 벤더 특정 설정을 언급했다. – Wizard79

답변

5

내가 SE 전화를 가지고 있지 않지만, 나는 그것의 시스템 덤프를 바라 보 고했습니다

  • 을 AOSP 소스에서 com.android.internal.telephony 인터페이스에서 두 개의 내부 방법이 있습니다 : enableDataConnectivity가() 및 disableDataConnectivity(). 이 인터페이스와 구현은 시스템의 일부입니다.
  • Phone.apk 앱의 일부인 com.android.phone.PhoneInterfaceManager에는 위와 동일한 이름의 두 가지 메소드가 있습니다. 이 메소드는/시스템을 호출합니다.
  • 소니가 com.android.phone.PhoneInterfaceManager.enableDataConnectivity()를 수정 했으므로 sharedPreferences에 저장된 부울을 추가로 확인합니다. false 인 경우 enableDataConnectivity() 메서드는 항상 com.android.internal.telephony의 disableDataConnectivity()를 호출합니다.
  • 물론이 부울 값은 "MMS & 데이터"환경 설정 화면을 통해 제어됩니다. "com.android.phone_preferences"환경 설정 컨테이너에 저장되며 pref 키는 "data_service_key"입니다. 또한이 체크 박스를 전환하면 settings 활동이 자동으로 com.android.internal.telephony에서 메소드를 호출하여 데이터 상태를 즉시 전환합니다.

그런 다음, 당신의 롬에 같은 데이터 연결 위젯 또는 무언가를 추가하려면 :

  • 당신은 루트가 필요합니다.
  • 위의 설정에 액세스하려면 "android.uid.phone"sharedUserId가 필요합니다.

나는 Phone.apk를 수정하는 것이 가장 좋을 것이라고 생각하여 데이터를 활성화/비활성화하는 특별한 의도를 포착합니다. data_service_key boolean을 설정하고 com.android.internal.telephony에서 메소드 중 하나를 호출합니다. 이것은 매우 쉬운 일이며, 그러면 위젯, 앱 및 기타 물건을 매우 쉽게 만들 수 있습니다. 그들은 특별한 의도를 사용합니다.

+0

루트없이 설정을 변경하는 방법은 없습니다 ... – Wizard79

+0

아니라고 생각합니다. 이러한 것들은 시스템 내부입니다. – broot

+0

프로그램이 기본 C 인터페이스를 사용하더라도? –