Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1f0ec21 authored by Danesh Mondegarian's avatar Danesh Mondegarian Committed by Michael Bestas
Browse files

Telecomm : Add ability to block calls if spam

Change-Id: If11ceebe9e4d1ae5e447caddbb053f852d7a3b06
parent b14ff4d5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@ LOCAL_PROGUARD_FLAGS := $(proguard.flags)
# Workaround for "local variable type mismatch" error.
LOCAL_DX_FLAGS += --no-locals

TELECOMM_SPAM_FILTER ?= $(LOCAL_PATH)/spam_filter

include $(TELECOMM_SPAM_FILTER)/Android.mk

include $(BUILD_PACKAGE)

# Build the test package.

spam_filter/Android.mk

0 → 100644
+1 −0
Original line number Diff line number Diff line
LOCAL_SRC_FILES += $(call all-java-files-under, spam_filter/src)
+19 −0
Original line number Diff line number Diff line
package com.android.server.telecom;

import android.content.Context;

/**
 * Listens for call updates and records whether calls should be blocked based on
 * caller info results.  Can also hang up calls while they are ringing, in case
 * they could not be blocked in time.
 */
public class SpamBlocker extends CallsManagerListenerBase {

    public SpamBlocker(Context context) {
    }

    public synchronized boolean shouldBlock(String number) {
        return false;
    }

}
+13 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ public final class CallsManager extends Call.ListenerBase {
        void onVideoStateChanged(Call call);
        void onCallSubstateChanged(Call call);
        void onCanAddCallChanged(boolean canAddCall);
        void onProcessIncomingCall(Call call);
    }

    /**
@@ -137,6 +138,7 @@ public final class CallsManager extends Call.ListenerBase {
    private final PhoneAccountRegistrar mPhoneAccountRegistrar;
    private final MissedCallNotifier mMissedCallNotifier;
    private final BlacklistCallNotifier mBlacklistCallNotifier;
    private final SpamBlocker mCallerInfoBlocker;
    private final Set<Call> mLocallyDisconnectingCalls = new HashSet<>();
    private final Set<Call> mPendingCallsToDisconnect = new HashSet<>();

@@ -205,6 +207,7 @@ public final class CallsManager extends Call.ListenerBase {
        mConnectionServiceRepository = new ConnectionServiceRepository(mPhoneAccountRegistrar,
                context);
        mInCallWakeLockController = new InCallWakeLockController(context, this);
        mCallerInfoBlocker = new SpamBlocker(context);

        mListeners.add(statusBarNotifier);
        mListeners.add(mCallLogManager);
@@ -219,6 +222,7 @@ public final class CallsManager extends Call.ListenerBase {
        mListeners.add(mHeadsetMediaButton);
        mListeners.add(RespondViaSmsManager.getInstance());
        mListeners.add(mProximitySensorManager);
        mListeners.add(mCallerInfoBlocker);
    }

    @Override
@@ -255,6 +259,12 @@ public final class CallsManager extends Call.ListenerBase {
            mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE);
            incomingCall.setDisconnectCause(
                    new DisconnectCause(android.telephony.DisconnectCause.CALL_BLACKLISTED));
        } else if (mCallerInfoBlocker.shouldBlock(incomingCall.getNumber())) {
            // TODO: show notification for blocked spam calls
            // TODO: add unique call type for spam
            mCallLogManager.logCall(incomingCall, Calls.BLACKLIST_TYPE);
            incomingCall.setDisconnectCause(
                    new DisconnectCause(android.telephony.DisconnectCause.CALL_BLACKLISTED));
        } else {
            setCallState(incomingCall, CallState.RINGING);
            if (hasMaximumRingingCalls(incomingCall.getTargetPhoneAccount().getId())) {
@@ -469,6 +479,9 @@ public final class CallsManager extends Call.ListenerBase {
        call.setExtras(extras);
        // TODO: Move this to be a part of addCall()
        call.addListener(this);
        for (CallsManagerListener listener : mListeners) {
            listener.onProcessIncomingCall(call);
        }
        call.startCreateConnection(mPhoneAccountRegistrar);
    }

+4 −0
Original line number Diff line number Diff line
@@ -84,4 +84,8 @@ class CallsManagerListenerBase implements CallsManager.CallsManagerListener {
    @Override
    public void onCanAddCallChanged(boolean canAddCall) {
    }

    @Override
    public void onProcessIncomingCall(Call call) {
    }
}