Rajeev
Rajeev

Reputation: 46969

Android phone number

The following code does not give me the phone number of the device ,how can i get the phone number

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number();
Toast.makeText(getApplicationContext(),"Telephone number: "+ number,
                      Toast.LENGTH_SHORT).show();

ALso i have tried the following..but the number doest show up

Programmatically obtain the phone number of the Android phone

How to get the mobile number of current sim card in real device?

Upvotes: 2

Views: 2634

Answers (4)

Amit K. Saha
Amit K. Saha

Reputation: 5951

[In case if anyone still stumbles here looking for this still existing age-old problem]

AFAIK, TelephonyManager.getLine1Number() is not reliable due to various constraints from operators. There are some java reflection based hacks but varies from device to device thus making those hacks sort of useless [at least in terms of supported models]

But there is a legitimate lawful logic to find the number, if you really need so. Query all the SMS by sms provider and get the "To" number.

Extra benefits of this trick: 1. you can get all the line numbers if there is multi sim in the device.

Cons: 1. you will need SMS_READ permission [sorry for that] 2. You will get all the sim numbers ever used in the device. this problem can be minimised with some constraint logic e.g. time frame (sms received or sent only today) etc. It would be interesting to hear from others about how to improve this case.

Upvotes: 0

Fernando Miguélez
Fernando Miguélez

Reputation: 11326

The only method available from Android API as all the comments suggest is getLine1Number(). However I have never been able to obtain it since your operator must provide you with a SIM that supports letting phone read internal phone number. That seems not very common, so I am afraid that you could be left without means of knowing it.

That's why some programs that use your phone number to identify you (i.e. Whatsapp) do ask user about his/her phone number, because there is no sure way to getting it programatically.

Upvotes: 2

ihrupin
ihrupin

Reputation: 6972

Try this:

private String getMyPhoneNumber(){
        TelephonyManager mTelephonyMgr;
        mTelephonyMgr = (TelephonyManager)
            getSystemService(Context.TELEPHONY_SERVICE); 
        return mTelephonyMgr.getLine1Number();
    }

Hope it help you

Upvotes: 0

Androider
Androider

Reputation: 724

the code provided:

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

should work fine, however, it will not if you forgot the permission "READ_PHONE_STATE".

Hope this works now :)

Upvotes: 0

Related Questions