Android 电话模块定制

■ 目标

    车载机禁止电话接入。

■ 案1

   发现来电话后,就直接挂掉好了。但是用模拟器模拟来电没有成功,未测试状态。

车载机运行过程中禁止电话接入

/frameworks/opt/telephony/src/java/com/android/internal/telephony/CallManager.java

case EVENT_NEW_RINGING_CONNECTION:
2319                    if (VDBG) Rlog.d(LOG_TAG, " handleMessage (EVENT_NEW_RINGING_CONNECTION)");
2320                    Connection c = (Connection) ((AsyncResult) msg.obj).result;
2321                    int subId = c.getCall().getPhone().getSubId();
2322                    if (getActiveFgCallState(subId).isDialing() || hasMoreThanOneRingingCall()) {
2323                        try {
2324                            Rlog.d(LOG_TAG, "silently drop incoming call: " + c.getCall());
2325                            c.getCall().hangup();
2326                        } catch (CallStateException e) {
2327                            Rlog.w(LOG_TAG, "new ringing connection", e);
2328                        }
2329                    } else {
2330                        mNewRingingConnectionRegistrants.notifyRegistrants((AsyncResult) msg.obj);
2331                    }
2332                    break;

原逻辑是如果正在拨号或者正在通话,挂掉。否则通知。可以改为无条件挂掉。。。

要确认新来电是否都走这个地方。比如有不明号码的场合。 

 

■ 目标

    车载机禁止打电话。

■ 案1

public void placeCall(Intentintent)

基本上intent都会处理到该app,然后入口都在这里。直接返回。

不过为了安全,还是在framework层屏蔽比较好,RIL层就放过了。

framework层 CallManager.dial()方法直接返回null就好了。

http://yuedu.163.com/book_reader/57dab4901d164e77806815974b19eda3_4

posted @ 2017-03-15 13:19  mlrs  阅读(400)  评论(0编辑  收藏  举报