The app design is optimized for the following Caller ID convention:
A local number is presented plainly.
A foreign number is preceded by the + sign and the country code.
Nonetheless, network operators do present the incoming numbers in different conventions. Roaming complicates the scenario.
When the app detects an incoming call, it checks if the call should be dropped. The various options are checked in the following order.
unknown number
contact list
the number length
filter rules
Each filter rule has 3 entities:
action = block or allow
country code
number prefix
The app defaults to use the country code only when the incoming number starts with a + sign.
If the incoming number does not start with a + sign. It is considered a local number. The filter checks it with the prefix alone.
If the prefix is blank, the rule is skipped.
When the incoming number starts with a + sign. It is considered an international number. The filter checks it by combining the + sign, country code and prefix.
Unfortunately the default option can be confusing when there are more than one country codes. The prefixes for different country codes are still used to filter the local numbers...
Starting from version 1.8.0, the settings option can specify the country code be always used.
When the country code is blank, the incoming number is checked with the prefix alone.
When the country code is not blank, it is combined with the + sign and the prefix.
In fact, the use of country code is not needed. You can add a + sign with the country code in the prefix field. It functions the same.
The blacklist consists of all the blocked prefixes.
When the incoming number starts with a blocked prefix, the app hang ups the call.
The whitelist consists of all the allowed prefixes.
When the incoming number starts with an allowed prefix, it will pass through the filter.
The whitelist overrides the blacklist. The incoming number is allowed through.
The filter has 2 prefixes:
Block, cc = none, prefix = 312
Allow, cc = none, prefix = 3125
All phone numbers starting with 312 are blocked except those starting with 3125.
Some telephone networks do not show country code for local numbers.
The filter has 4 prefixes:
Block, cc = 852, prefix = 312
Allow, cc = 852, prefix = 3125
Block, cc = 976, prefix = 170
Block, cc = none, prefix = 5
The app defaults to use the country code only when the incoming number starts with a + sign:
Incoming number 31234567 is blocked. (Blacklist)
Incoming number 31256789 is allowed. (Whitelist)
Incoming number 170123456789 is blocked. (Blacklist)
Incoming number +97617012345678 is blocked. (Country code)
Incoming number +97631234567 is allowed. (Not covered)
Incoming number 54321678 is blocked. (Blacklist)
Starting from version 1.8.0, the country code can be set always used:
Incoming number 31234567 is allowed. (Not covered)
Incoming number 31256789 is allowed. (Not covered)
Incoming number 170123456789 is allowed. (Not covered)
Incoming number +97617012345678 is blocked. (Country code)
Incoming number +97631234567 is allowed. (Not covered)
Incoming number 54321678 is blocked. (Blacklist)
The filter has 1 prefix:
Block, cc = 976, prefix = none
All phone numbers starting with +976 are blocked. No call from Mongolia!
Incoming number 1234567 is allowed. The blank prefix is skipped. It does not start with +976.