In some cases, it is possible that the number is sent in the header from the network operator itself. (i.e. you will not see it via Wi-Fi)
Different operators use different headers:
eg.
X-UP-CALLING-LINE-ID (Vodacom, South Africa)x-up-subno (Google Adsense Mobile code snippet considers this one among others )
Some device identifier headers that may contain the user's MSIDN.
x-dcmguidx-up-subnox-jphone-uidx-em-uid
There is even more here: http://mobiforge.com/developing/blog/useful-x-headers
You will need to look at your target market (from which network they usually come) to find out which headings most users will cover for you.
source share