Android M ROM 层拦截电话

来源:互联网 发布:linux rm -rf 返回-1 编辑:程序博客网 时间:2024/06/10 03:10

最近需要添加联系人黑名单功能,涉及到电话拦截,在CallsManager.java中有如下方法:

    @Override    public void onSuccessfulIncomingCall(Call incomingCall) {        CallerInfo callerInfo = incomingCall.getCallerInfo();        setCallState(incomingCall, CallState.RINGING, "successful incoming call");    // begin - Call blocking to phone number in blacklist.        if (callerInfo != null && !TextUtils.isEmpty(callerInfo.phoneNumber) && BlacklistUtils.isBlacked(mContext, callerInfo.phoneNumber)) {        //  写入通话记录,BLACKLIST_TYPE 标明是被拦截的通话记录            mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE);            //  Async update blacklist table.            new android.os.AsyncTask<CallerInfo,Integer,Boolean>() {                @Override                protected Boolean doInBackground(CallerInfo[] params) {                    CallerInfo localCallerInfo = params[0];                    Boolean update = BlacklistUtils.updateCallBlockedTimes(mContext, localCallerInfo.phoneNumber);                    return update;                }                @Override                protected void onPostExecute(Boolean update) {                    super.onPostExecute(update);                    Log.d(this, "updateCallBlockedTimes, update: " + update);                }            }.execute(callerInfo);            incomingCall.reject(false, null);        }    // - blocking end.        else if (hasEmergencyCall() || hasMaximumRingingCalls() || hasMaximumDialingCalls()                || shouldBlockFor3GVT(incomingCall.isVideoCall())) {            incomingCall.reject(false, null);            mMissedCallNotifier.showMissedCallNotification(incomingCall);            mCallLogManager.logCall(incomingCall, Calls.MISSED_TYPE);        } else {            addCall(incomingCall);        }    }
0 0
原创粉丝点击