【问题标题】:Android Invoke RIL methodsAndroid 调用 RIL 方法
【发布时间】:2015-09-13 07:41:06
【问题描述】:

我能够在 android 中公开隐藏的 RIL 函数。我可以按如下方式实例化 RIL 类。

RIL objRil = new RIL(getApplicationContext()); //successful
RadioState c = objRil.getRadioState() //is giving radio not available. 

有很多函数使用 Message 对象。例如

Message response= Message.obtain();
objRil.getOperator(response);

但我收到一条错误消息,提示消息目标不能为空。我不确定如何传递参数。

这是我试图调用的android源代码的示例函数。

// C:\Users\SK\AppData\Local\Android\android-sdk\sources\android-22\com\android\internal\telephony\RIL.java


public void  getOperator(Message result) {
    RILRequest rr = RILRequest.obtain(RIL_REQUEST_OPERATOR, result);
    if (RILJ_LOGD) 
         riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
    send(rr);
}

我猜这个消息对象就像一个输出参数。调用此函数的正确方法是什么?

【问题讨论】:

  • Message#obtain(android.os.Handler)
  • 谢谢。这是工作。但我收到收音机不可用消息。那是什么意思?这些功能是否适用于所有手机?我必须更改任何手机设置或添加一些内容吗?
  • 我不知道,刚刚回答了你关于空目标的问题

标签: java android com hidden ril


【解决方案1】:

您收到 RADIO_NOT_AVAILABLE 响应,因为您的 RIL 对象没有“连接”到任何 RILD 进程(RIL 守护进程)

OPERATOR 是 RIL 发送到基带处理器 (MODEM) 的 GET 消息,以检测设备注册了哪个运营商。

响应应该是这样的:

RILJ: [1234]> OPERATOR
//PLMN Number, PLMN Long Name, PLMN Short Name
RILJ: [1234]< OPERATOR {31000, Verizon Wireless, Verizon}

但是,由于您的 RIL 实例未连接到任何 RILD 进程,您将始终收到 RADIO_NOT_AVAILABLE 响应。我的意思是,您正在发送一条 GET 消息,但没有 RADIO 来回答您的 GET 消息。

有一个 RILD 进程正在运行,它可能连接到系统创建的 RIL.java 对象。您可以通过以下方式查看 RIL 日志:

adb logcat -b radio

双卡模型有时有两个 RILD 进程(每个卡一个)和两个 RIL.java 实例(每个卡一个)。

我不确定创建 RIL java 实例并将其连接到 RILD 进程是否那么容易。

不确定如何实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多