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