Как получить доступ к сетевым операторам? (используя методы 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/
- результаты одинаковы.
Вопрос
- Возможно ли получить доступ
RIL
методы без подписи моего приложения системным ключом или с помощью пользовательской сборки Android? - Может быть, я смогу преодолеть эту проблему, создав приложение непосредственно для Linux?
- Любой совет по этой проблеме высоко ценится.
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?