android 5.0 上拨打紧急号码无通话记录的原因

测试了两种情况 
1. 无sim卡 拨打112无通话记录 拨打110无通话记录
2. 有sim卡 拨打112无通话记录 拨打110有通话记录

在packages/services/Telecomm/src/com/android/server/telecom/CallLogmanager.java中有下面这段代码,表明了不记录紧急号码的拨号记录。
然后结合上面实际观察到的情况得到一个有意思的现象:就是在有sim卡的时候110不算紧急号码,在无sim卡的时候110算紧急号码。
重新测试有无sim卡的情况,注意观察拨号界面拨出号码时显示联系人名称的位置,确实没有sim卡的时候110才算紧急号码,有sim卡的时候不算。
但是需要说明的一点是,这只是个案,代码中也说了(This behavior is set on a per-product basis, based on carrier requirements.)
我自己的手机上(android 5.0.2)有无sim卡110都算紧急拨号,都不会记录通话记录。
本文不提供问题的解决方案,只是说明现象的原因,如果你想自己进行定制,多关注下下面的代码。

顺便PhoneNumberUtils的位置:frameworks/base/telephony/java/android/telephony/PhoneNumberUtils.java

private void logCall(
        CallerInfo callerInfo,
        String number,
        int presentation,
        int callType,
        int features,
        PhoneAccountHandle accountHandle,
        long start,
        long duration,
        Long dataUsage) {
    boolean isEmergencyNumber = PhoneNumberUtils.isLocalEmergencyNumber(mContext, number);

    // On some devices, to avoid accidental redialing of emergency numbers, we *never* log
    // emergency calls to the Call Log.  (This behavior is set on a per-product basis, based
    // on carrier requirements.)
    final boolean okToLogEmergencyNumber =
            mContext.getResources().getBoolean(R.bool.allow_emergency_numbers_in_call_log);

    // Don't log emergency numbers if the device doesn't allow it.
    final boolean isOkToLogThisCall = !isEmergencyNumber || okToLogEmergencyNumber;
    sendAddCallBroadcast(callType, duration);
    if (isOkToLogThisCall) {
        Log.d(TAG, "Logging Calllog entry: " + callerInfo + ", "
                + Log.pii(number) + "," + presentation + ", " + callType
                + ", " + start + ", " + duration);
        AddCallArgs args = new AddCallArgs(mContext, callerInfo, number, presentation,
                callType, features, accountHandle, start, duration, dataUsage);
        logCallAsync(args);
    } else {
      Log.d(TAG, "Not adding emergency call to call log.");
    }
}

如果想要查看emergencynumber有哪些 在拨出110的时候抓取radio log,下面是我抓到的
没有sim卡的时候的radio log

I/RILQ ( 274): (0/274):RIL[0][main] qmi_ril_phone_number_is_emergency: property ril.ecclist = "911,*911,#911,112,000,08,110,999,118,119"

有sim卡的时候 radio log

I/RILQ ( 275): (0/275):RIL[0][main] qmi_ril_phone_number_is_emergency: property ril.ecclist = "911,*911,#911,112"



*markdown测试*

你可能感兴趣的:(android 5.0 上拨打紧急号码无通话记录的原因)