android – getLine1Number()返回空白,不为null

我想获得手机号码的设备.我已经使用 Alex Volovoy’s This Link以下代码引用
TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

Log.d("msg","Phone : "+mPhoneNumber);

Logcat中的OUTPUT:

没有SIM卡手机返回:

02-01 17:22:45.472: D/msg(29102): Phone : null

用Simcard:

02-01 17:22:45.472: D/msg(29102): Phone :

我也已经在< uses-permission android:name =“android.permission.READ_PHONE_STATE”/>在AndroidManifest.xml中

所以我该怎么做?有没有错误?

解决方法

要从设备获取电话号码,首先必须在设备上设置自己的电话号码,只需通过:

设置 – >关于电话 – >状态 – >我的电话号码

SIM卡上的电话号码不适用于每个操作符,如在印度,Sim没有任何记忆中的电话号码,所以我们无法从这些连接中获取电话号码.然而,一些国家和操作符已经在SIM卡上存储了电话号码,我们可以得到这些.为了使其适用于所有设备,我们可以采用两种策略:

为了避免这个问题,我们可以抓住错误并相应地工作.喜欢:

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

String MyPhoneNumber = "0000000000";

try 
{
    MyPhoneNumber =tMgr.getLine1Number();
}
catch(NullPointerException ex)
{
}

if(MyPhoneNumber.equals("")){
    MyPhoneNumber = tMgr.getSubscriberId();
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...