2011-11-28 131 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