Programmatisch het telefoonnummer van de Android telefoon verkrijgen

Hoe kan ik programmatisch het telefoonnummer krijgen van het apparaat waarop mijn android app draait?

Oplossing

Code:

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

Vereiste Toestemming:

Caveats:

Volgens de zeer upvoted commentaren, zijn er een paar caveats om bewust van te zijn. Dit kan null of "" of zelfs "???????" teruggeven, en het kan een oud telefoonnummer teruggeven dat niet langer geldig is. Als je iets wilt dat het apparaat uniek identificeert, moet je getDeviceId() gebruiken.

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

private String getMy10DigitPhoneNumber(){
    String s = getMyPhoneNumber();
    return s != null && s.length() > 2 ? s.substring(2) : null;
}

Code overgenomen van http://www.androidsnippets.com/get-my-phone-number

Commentaren (4)

Hoewel het mogelijk is om meerdere voicemail accounts te hebben, als je vanaf je eigen nummer belt, routeren carriers je naar de voicemail. Dus, TelephonyManager.getVoiceMailNumber() of TelephonyManager.getCompleteVoiceMailNumber(), afhankelijk van de smaak die je nodig hebt.

Ik hoop dat dit helpt.

Commentaren (2)