如何获得可用的网络运营商?(使用RIL和非api方法)



免责声明 -我知道调用非api方法会如何影响我的应用程序。它不会在Google Play上发布,我只是为了个人使用而创建它。

Task -获取root手机(Android 2.3.3)上可用的网络运营商。模型已知

What have I try

很多反射:

  • 尝试获取PhoneFactory,获取默认的Phone (getDefaultPhone)或GSMPhone。我已经收到了对PhoneProxy的实际引用,并且能够调用getAvailableNetworks,它返回CommandException - RADIO_NOT_AVAILABLE
  • 试图直接瞬时化RIL。试图在这里调用getAvailableNetworks,结果相同(RADIO_NOT_AVAILABLE)。试图调用registerForAvaiable,它从不向处理器发送消息。试图将LocalSocket连接到"rid"。获取IOException: Permission denied

我已经尝试了上面的一切与我的应用程序存储在/system/app/ -结果是相同的。

  1. 甚至有可能访问RIL方法没有签署我的应用程序与系统密钥或使用自定义Android构建?
  2. 也许我可以通过直接为Linux构建应用程序来克服这个问题?任何关于这个问题的建议都是非常感谢的。

有趣的问题-如果我们能访问RIL就太好了。

在XDA上,我有时会发现显示RIL信息的应用程序。当我仔细观察时,我通常发现它们正在调用键盘代码,然后解析输出—而不是调用API。哦,这是其中一个应用程序。(此方法是特定于制造商的。)
http://forum.xda-developers.com/showthread.php?t=1687249

这是一篇关于PhoneFactory等的文章。
https://stackoverflow.com/a/6504808/150016

关于这个话题有一个很好的讨论:
可以打个电话。电话对象通过sdk实例化?

您可以构建自己的RIL实现。你可以通过设置Android属性rild.lib来告诉Android加载你的库。在已登录的手机上,您可以执行

getprop | grep ril

查看当前使用的rid库。

sierra gsm软件狗/huawei软件狗等都有开源的ril实现。你会有主意的。

但不是所有的事情都是容易做到的。有了这个机制,你只能实现android给你的回调。例如,它不允许你建立数据漫游连接。这仍然由android框架控制。

要将当前的rid库更改为您自己的库,可以设置

setprop rild.lib systemmodulesyourlibrary.so 

参见http://www.kandroid.org/online-pdk/guide/telephony.html

相关内容

  • 没有找到相关文章

最新更新