2011-10-27 36 views
1

首先關閉MSISDN與電話號碼相同。 我一直在尋找如果它可能從Andoid手機獲取電話號碼。從Android手機獲取可靠的MSISDN? VoiceMailNumber Line1Number

我的研究結果是肯定否。

有可能使用TelephonyManagergetLine1Number()。然而這是不可靠的。

我已經用摩托羅拉Atrix測試了上述內容,但是這並沒有檢索到有效的電話號碼。所以死在水裏嗎?

那麼我能夠通過TelephonyManagergetVoiceMailNumber()從電話中獲得電話號碼。

我永遠不會猜到語音郵件號碼是我的實際電話號碼(MSISDN)。

所以我的問題是,檢查要麼getLine1Number()getVoiceMailNumber()是一個可靠的方式來獲得MSISDN? (即:如果getLine1Number返回0000000000000,然後檢查getVoiceMailNumber或類似的規定)

沒有一個本網站能夠從getVoiceMailNumber()獲得MSISDN之前已經提到的,這是絕對看不出來的,幾乎矛盾的文件,但事實是它適用於我的特定設備。 (未在其他設備上測試)

+0

這個問題在另一個問題提出差不多一年前被問及如何重複標記? – Dave

回答

2

如果使用getVoiceMailNumber(),它不會100%可靠。很多時候這可能會給電話號碼,但如果手機獲得固件更新並且這個號碼變成了別的什麼呢?說一個簡短的代碼?所以不,這不可靠。

如果您可以從getLine1Number()獲取數字,那麼爲什麼不提示用戶輸入數字?您可以通過發送該短信的短消息來驗證該短消息,在進一步處理之前用戶需要輸入短消息。

+0

謝謝omermuhammed,這是一個創造性的解決方案。這太糟糕了,它不是100%可靠的。我認爲IMSI可能是比MSISDN更好的方法。接縫更可靠。 – Dave

1

另一種通過它的方式是讓用戶輸入他們的號碼。 然後發送一個短信到這個輸入的號碼。

驗證此消息已收到,然後你可以斷然說,用戶已經輸入了正確的MSISDN,並存儲這個。

簡單:)

1

這是一個古老的問題。不過,我想和大家分享一些信息,這可能有助於人們對未來:

getLine1Number()返回手機串號爲1號線,例如,MSISDN的GSM手機。如果不可用,則返回null。

MSISDN是電話號碼。但是,MSISDN存儲在SIM卡中的文件中。主要的問題是,它不是強制性的填寫該文件。所以,你有一些包含MSISDN的SIM卡,而其他SIM卡沒有這些信息。

因此,閱讀MSISDN是完全不可靠的。

getVoiceMailNumber()返回語音郵件號碼。如果不可用,則返回null。

這也是不可靠的,因爲這個號碼從運營商變成運營商。某些運營商將語音郵件用作自己的電話號碼。但是,其他運營商使用不同的數字,如* 55或類似的東西。

因此,確定自己的電話號碼非常困難。所以,避免使用電話號碼。