Firstly, Contacts.Phones.NUMBER_KEY is deprecated. Secondly, why do you need this value? This is not a phone number, but a "normalized" phone number. If you want the phone number to match your code, use Contacts.Phones.NUMBER
In any case, I suggest you not use outdated elements unless you are targeting old phones.
=================
Phone numbers are stored in separate order to facilitate matching. This helps to use the LIKE statement in SQL.
For a regular SQL user, it might look the same as in NUMBER_KEY LIKE '% 1234' and where NUMBER_KEY LIKE '4321%'. But for the db engine, having a wildcard at the end is much simpler (efficient). Efficiency is the main factor in finding an identifier for an incoming call.
By the way, you may not have noticed, most phones (not to mention only android) do not match an integer to search for the caller ID. In all Nokia phones I have a number that is stored, say, its 016 12345678 (its not a real quantity), because Mr. X When I receive a phone call from another number 016 99345678, it shows that Mr. X is calling. It compares only the last few digits !!!
source share