Can a third-party app implement CallScreeningService in android 7?

Looking at the docs you linked to:

This service can be implemented by the default dialer (see getDefaultDialerPackage()) to allow or disallow incoming calls before they are shown to a user.

Don't think you can do this in a separate app (at least with the current interface: I'd expect in the not too distant feature it will be exposed).


As of Android 10 (API 29+), you can have a CallScreeningService without the requirement of also implementing an entire dialer app. Until Android 10, only the default dialer app's call CallScreeningService would be invoked.

https://developer.android.com/about/versions/10/features#call-screening

Don't get too excited though, because it's very buggy and does not work as the documentation says it does:

  • CallScreeningService#onScreenCall is called for known contacts
  • CallScreeningService#setSkipCallLog doesn't show blocked calls in the call log

My workaround for getting called for known contacts was to ask the user for contact access and check if the incoming caller was in the user's contacts. There is no workaround for the other issues at the moment.

I made a very basic screening app that declines all calls from numbers not in the user's contacts you can use an an example if you like: https://github.com/joshfriend/gofccyourself