Как получить доступ к сетевым операторам? (используя методы RIL и не-API)

Отказ от ответственности - я знаю, как вызов методов, не относящихся к API, может повлиять на мое приложение. Он не будет опубликован в Google Play, я создаю его только для личного использования.

Задача - получить доступ сетевых операторов на рутированном телефоне (Android 2.3.3). Модель известна.

Что я пробовал

Много размышлений:

  • Пытался получить PhoneFactoryполучить по умолчанию Phone (getDefaultPhone) или же GSMPhone, Я получил реальную ссылку на PhoneProxy и смог позвонить getAvailableNetworks который вернул CommandException - RADIO_NOT_AVAILABLE
  • Пытался мгновенно RIL непосредственно. Пытался позвонить getAvailableNetworks здесь с тем же результатом (RADIO_NOT_AVAILABLE). Пытался позвонить registerForAvaiable который никогда не отправляет сообщение обратно обработчику.
  • Пытался подключиться LocalSocket в "Rild". Получение IOException: Permission denied

Я попробовал все выше с моим приложением, хранящимся в /system/app/ - результаты одинаковы.

Вопрос

  1. Возможно ли получить доступ RIL методы без подписи моего приложения системным ключом или с помощью пользовательской сборки Android?
  2. Может быть, я смогу преодолеть эту проблему, создав приложение непосредственно для Linux?
  3. Любой совет по этой проблеме высоко ценится.

2 ответа

Решение

Вы можете создать свою собственную реализацию RIL. Вы можете сказать Android, чтобы загрузить вашу библиотеку, установив android propety rild.lib. На рутированном телефоне вы можете сделать

getprop | grep ril

чтобы увидеть вашу текущую используемую библиотеку Rild.

Существуют реализации ril с открытым исходным кодом для ключей sierra gsm / ключей huawei и т. Д. Вы получите представление.

Но не все легко возможно. С помощью этого механизма вы можете реализовать только те обратные вызовы, которые делает для вас Android. Например, это не позволяет вам устанавливать соединение в режиме роуминга. Это все еще контролируется платформой Android.

Чтобы изменить свою текущую библиотеку Rild на свою собственную, вы можете установить

setprop rild.lib \system\modules\yourlibrary.so 

см. также http://www.kandroid.org/online-pdk/guide/telephony.html

Интересный вопрос - было бы здорово, если бы мы могли получить доступ к RIL.

На XDA я иногда нахожу приложения, которые отображают информацию RIL. Когда я смотрю поближе, я обычно нахожу, что они вызывают код клавиатуры и затем анализируют вывод - не вызывая API. О, вот одно из тех приложений. (Этот метод зависит от производителя.)
http://forum.xda-developers.com/showthread.php?t=1687249

Вот пост о PhoneFactory и т. Д.
/questions/34972535/obnaruzhenie-nastrojki-ispolzovat-tolko-seti-2g/34972543#34972543

И вот очень хорошая дискуссия на эту тему:
Можно ли создать объект telephony.Phone через SDK?

Другие вопросы по тегам