2014-01-09 96 views
4

我已閱讀,使用getLine1Number()如下面的代碼有問題,如問題與getLine1Number()來獲取設備的電話號碼

  1. 返回null
  2. 返回一個無效的字符串
  3. 原因空指針異常。

是否還有其他問題可引起?

我不確定的最大問題是,它是否會返回一個無效號碼(如電話號碼之前)?這是最重要的問題,因爲如果它返回一個數字,我可以依賴那個數字嗎?

代碼:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
String mPhoneNumber = tMgr.getLine1Number(); 

所需的權限:

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

回答

1

Null當SIM存在,仍然不能閱讀次數返回。某些SIM卡不允許這樣做,而其他SIM卡中沒有該號碼。

引用TelephonyManager.getLine1Number() failing,Android issue about TelephoneManagerThe impossibleness of getting your PhoneNumber in Android and AlertDialogs on Futures blog,看起來SIM卡內的號碼存在並不需要操作,實際上是由網絡分配的。如果您閱讀了問題的鏈接,則在人們建議的評論中,用戶可以從Android界面更改SIM中的號碼。但是,這可能只適用於舊版本。儘管我已經嘗試更改SIM中的號碼(Android 4.0版本之後),但它不允許我這樣做。即使有人改變它,實際的號碼也是由網絡分配的。但是,由於您正在從SIM存儲中提取數據,因此我會說它不是100%安全的。

這是我的2美分。希望能幫助到你。

2

據我所知,返回的電話號碼是存儲在SIM卡的MSISDN中的任何信息,該信息未被某些運營商填寫。 (更糟糕的是,根據一些報道,這個數字可能實際上是不正確的!)

不幸的是,我不知道任何其他方法。