1

I want to programmatically get the phone number in Android Studio. I've tried this: (and it is causing crashes)

TelephonyManager tMgr =          
      (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 


String mPhoneNumber = tMgr.getLine1Number();

What is wrong? Any other ways to get the phone number?

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Rami
  • 11
  • 1
  • 2
  • 1
    check this https://developer.android.com/training/contacts-provider/retrieve-names.html – Michał B Jan 22 '18 at 09:01
  • 1
    Please post the logs with error – Albanninou Jan 22 '18 at 09:10
  • 1
    Does this answer your question? [Programmatically obtain the phone number of the Android phone](https://stackoverflow.com/questions/2480288/programmatically-obtain-the-phone-number-of-the-android-phone) – Troy Apr 27 '22 at 13:06

2 Answers2

3

I think you need <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

private String getMyPhoneNO() {
    TelephonyManager tMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String mPhoneNumber = tMgr.getLine1Number();
    return mPhoneNumber;
}

with

    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.READ_PHONE_STATE},
                MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
    } else {
        String phoneNumber = getMyPhoneNO();
    }

in Activity/Fragment

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    if (requestCode == MY_PERMISSIONS_REQUEST_READ_PHONE_STATE) {
        if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            String phoneNumber = getMyPhoneNO();
        }
    }
}
Tung Duong
  • 1,156
  • 7
  • 19
0

You need to add <uses-permission android:name="android.permission.READ_PHONE_STATE" /> to manifest + request the permission on runtime for newer android versions. https://developer.android.com/training/permissions/requesting.html

if (ContextCompat.checkSelfPermission(thisActivity,
    Manifest.permission.READ_PHONE_STATE)
            != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_PHONE_STATE},
            MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
}

Otherwise you can see a explaining error in the stacktrace.

Felix
  • 95
  • 2
  • 11