2011-11-28 51 views
2

我要显示我的电话号码,当我打开应用程序,但我得到一个异常说Android的电话号码

申请电话已()意外停止。请再试一次。

我已经添加清单文件Read_Phone_State权限。

public class Telephone extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     View v = new View(this); 
     v.setTag("The Number is : " + getMyTenDigitsNumber()); 
     setContentView(v); 

    } 

    private String getTelephone() { 
     TelephonyManager tm; 
     tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     return tm.getLine1Number(); 

    } 

    private String getMyTenDigitsNumber() { 
     String s = getTelephone(); 
     return s.substring(3); 
    } 
} 
+0

什么是日志?请发布相应的logcat条目 –

+0

我已将getLine1Number()更改为getDeviceSoftwareVersion(),但应用程序被强制关闭。这是logcat:[link](http://i106.photobucket.com/albums/m265/ Mihaela15/Untitled.png) – Mischaila

回答

1

这可能是因为getLine1Number被返回null让你后续的子操作会引发NullPointerException(你应该能够通过logcat的验证)。根据该方法的documentation,如果该号码不可用,则它可以返回null。您的提供商可能不会将该电话号码存储在SIM卡上,因此在该情况下,该号码可能无法用于该方法。

+0

我在我的个人手机设备上测试它,logcat告诉我的是nullPointException,但是如何让我的提供者显示它? – Mischaila

+0

如果提供者没有返回它,则无法强制它。即使它适用于您的手机,也无法保证其可用于其他提供商的手机。如果您使用电话号码来唯一标识手机,则最好使用getDeviceId() – Chris

0

getLine1Number()可能返回null,因此您的子字符串操作会引发NPE。 getLine1Number()在号码不可用时返回null,例如没有插入SIM卡,或者号码未存储在SIM卡上。您可以转到设置 - >关于手机 - >状态,并检查您的号码是否显示在我的电话号码字段中,以检查号码是否可用。

+0

感谢Raghav Sood,它被写为未知数:) – Mischaila