Обнаружение и изменение программно соединения данных (GPRS / UMTS) на Android - PullRequest
5 голосов
/ 14 июня 2010

Я знаю, что, к сожалению, обнаружение и изменение программно подключения к данным (GPRS / UMTS) на vanilla Android невозможно, и обычным обходным решением является редактирование настроек APN.Это вряд ли хорошее решение.

Однако на моем устройстве (Xperia X10) рядом с «роумингом данных» есть дополнительная настройка, которая позволяет включать или отключать MMS и данные.Я полагаю, что это персонализация Sony Ericsson, и, возможно, даже у других производителей есть что-то подобное.Есть ли способ получить доступ к этому параметру?

Ответы [ 2 ]

5 голосов
/ 16 сентября 2010

У меня нет телефона SE, но я изучил его системный дамп и:

  • В источниках AOSP в интерфейсе com.android.internal.telephony есть два внутренних метода: enableDataConnectivity() и disableDataConnectivity ().Этот интерфейс и его реализация являются частью системы.
  • В com.android.phone.PhoneInterfaceManager, который является частью приложения Phone.apk, есть также два метода с такими же именами, как указано выше.Эти методы просто вызывают выше / системные.
  • Sony модифицировала com.android.phone.PhoneInterfaceManager.enableDataConnectivity (), поэтому она выполняет дополнительную проверку на логическое значение, хранящееся в sharedPreferences.Если значение равно false, тогда метод enableDataConnectivity () всегда вызывает disableDataConnectivity () объекта com.android.internal.telephony.
  • Конечно, этот логический элемент управляется с помощью экрана настроек: «MMS и данные».Он хранится в контейнере настроек «com.android.phone_preferences», а ключ pref: «data_service_key».Кроме того, когда вы устанавливаете этот флажок, действие настройки автоматически вызывает методы из com.android.internal.telephony для немедленного переключения состояния данных.

Если вы хотите добавить виджет подключения к данным или что-то подобное в ваш rom, затем:

  • Вам нужен root.
  • Вам нужен "android.uid.phone" sharedUserId для доступа к вышеуказанным настройкам.

Я думаю, что это будетЛучше всего изменить Phone.apk, чтобы он поймал особое намерение включить / отключить данные.Это установит data_service_key логическое значение и вызовет один из методов из com.android.internal.telephony.Это должно быть довольно легко сделать, и тогда вы сможете очень легко создавать виджеты, приложения и другие вещи - они будут использовать это специальное намерение.

1 голос
/ 14 сентября 2010

Вы смотрели на Зона разработчика SE ? Я нашел это довольно полезным.

...