Java getLine1Number()返回null

Java getLine1Number()返回null,java,android,Java,Android,mPhoneNumber变量返回null。我已经调试这个东西一个星期了,我被卡住了。为什么getLine1Number返回空值 try { TelephonyManager tMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); if (tMgr != null) { if (checkSelfPermission(android.Manifest.permis

mPhoneNumber变量返回null。我已经调试这个东西一个星期了,我被卡住了。为什么
getLine1Number
返回空值

try
{
    TelephonyManager tMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
    if (tMgr != null)
    {
        if (checkSelfPermission(android.Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED)
        {
            if (checkSelfPermission(android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
            {
                // TODO: Consider calling
                // Activity#requestPermissions
                // here to request the missing permissions, and then overriding
                // public void onRequestPermissionsResult(int requestCode, String[] permissions,
                // int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for Activity#requestPermissions for more details.
                return;
            }
        }
        String mPhoneNumber = tMgr.getLine1Number();
        // Log.v("PHONE: ", mPhoneNumber);
    }
    else
    {
        //Log.v("PHONE NO: ", "NO");
    }   
}
catch(Exception e)
{
    // TODO: Handle exception
}

网络提供商并不总是将电话号码(msisdn)存储在SIM卡上。因此,获取电话号码很大程度上取决于您使用的移动运营商

一些运营商在通过网关后将电话号码放入标题(针对网络浏览器用户);其中一些将msisdn直接放在SIM卡上;其中一些只提供“令牌”来识别用户

这可能是您在尝试获取数字时获取“null”值的原因


请在您正在检查的第4行检查您是否有权阅读手机状态。如果是这样,你就回来。如果没有,你试着读电话号码。字符串mPhoneNumber=tMgr.getLine1Number();行必须位于检查android.Manifest.permission.READ\u PHONE\u状态的括号内。或者必须将==更改为=除了这个问题之外,请记住。您确定
mPhoneNumber
这里是
null
而不是其他地方的同名变量吗?你说你有一个NPE,但这段代码不会抛出一个NPE(我删除了问题的这一部分,否则它可能会作为一个副本关闭。)