2013-03-05 67 views
0

我試圖contactnumber android中獲取車主它運行在模擬器罰款,但在handset.Here不工作是代碼如何獲取當前的SIM卡號碼

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
    String imei = tm.getDeviceId(); 
    String phoneNumber = tm.getLine1Number(); 

回答

3

不保證getLine1Number()將始終返回所有設備上的SIM卡號碼。因爲號碼的可用性取決於其在SIM卡中的存儲。

如果SIM卡中沒有存儲/使用該號碼,則該方法將返回空字符串。

爲了獲得用戶的電話號碼,您應該將用戶設備的短信發送到您的服務器或設備(與Viber或其他應用相同)。一個好的做法是確保用戶的確認完成。

+0

然後通過其他方式獲取號碼 – Supreet 2013-03-05 14:09:55

+0

不,除了從用戶設備向您的服務器或設備發送短信之外,沒有其他辦法。 (與Viber或其他應用程序一樣) – waqaslam 2013-03-05 14:10:56

1

用途:

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String getSimSerialNumber = telemamanger.getSimSerialNumber(); 
String getSimNumber = telemamanger.getLine1Number(); 

並添加下面的權限進入你的Androidmanifest.xml文件。

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

編輯:使用getSimSerialNumber()

getLine1Number() - 此方法返回線1的電話號碼串,即所述MSISDN用於GSM電話。如果不可用,則返回null。

此方法僅適用於少數手機,但不適用於所有手機。

因此,如果您需要根據SIM執行操作(除了調用),那麼您應該使用getSimSerialNumber()。它總是獨一無二的,有效的,它始終存在。

String sSimSerial = mTelephonyMgr.getSimSerialNumber();

+0

我已經添加了此權限 – Supreet 2013-03-05 14:09:20

+0

請參閱我的編輯。 – Shrikant 2013-03-05 14:12:57

1

getSimSerialNumber()是您需要調用以獲取SimSerialNumber的方法。

代碼更新

TelephonyManager tm=(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
String imei = tm.getDeviceId(); 
String phoneNumber = tm.getLine1Number(); 
String simSerialNumber = tm.getSimSerialNumber(); 
+0

請給我完整的代碼。 – Supreet 2013-03-05 14:11:53

+0

sim卡的序列號不是它的電話號碼 – waqaslam 2013-03-05 14:13:57

1

1)通過增加檢查清單文件,

2)使用,android.hardware.telephony.gsm在implemetation。

It should work fine.. 
+0

請詳細說明一下,因爲我在這個領域是新的先謝謝 – Supreet 2013-03-05 14:14:19

+0

你在清單中添加 2013-03-05 14:15:43

+0

是的,我已添加權限 – Supreet 2013-03-06 04:38:32

相關問題