免责声明 -我知道调用非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/
-结果是相同的。
- 甚至有可能访问
RIL
方法没有签署我的应用程序与系统密钥或使用自定义Android构建? 也许我可以通过直接为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