AndroidManifest.xml :

<uses-permission android:name="android.permission.READ_PHONE_STATE" />


ActivityMain :

Code:

package com.yotamarker.simstuff1;

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    final int REQUEST_READ_PHONE_STATE = 0;
    @SuppressLint("MissingPermission")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        ReadSIMPermission();
        // get SIM card ID
//        String simID = null;
//        if(ReadSIMPermission()){simID = telephonyManager.getSimSerialNumber();}
//        if(simID!=null){ Toast.makeText(this,"sim ID number : " +simID,Toast.LENGTH_LONG).show();}
        // get telNumber
        String telNumber = null;
        if(ReadSIMPermission()){telNumber = telephonyManager.getLine1Number();}
        if(telNumber!=null){ Toast.makeText(this,"tel number : " + telNumber,Toast.LENGTH_LONG).show();}

    }
    public Boolean ReadSIMPermission(){
        Boolean granted =false ;
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.READ_PHONE_STATE)) {

            new AlertDialog.Builder(this)
                    .setTitle("Permission needed")
                    .setMessage("This permission is needed to get your SIM card data")
                    .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            ActivityCompat.requestPermissions(MainActivity.this,
                                    new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
                        }
                    })
                    .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    })
                    .create().show();

        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
            granted = true;

        }
        return granted;
    }



}


for some reason telephonyManager.getLine1Number() returns null instead of the actuall device's
phone number