2013-05-02 61 views
2

我使用下面的Android的代码获取手机号码,它的唯一的工作在Android模拟器:获取有关GSM移动手机号码使用的Android代码

TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
String number = tm.getLine1Number(); 

但是,当我在真实设备(Samsung Galaxy Chat B5330)测试它,它给什么都没有(空字符串)

请帮助一些代码片段。

+0

可能必须使用来自本地运营商的USSD代码,而不是当然,但也有兴趣知道! – 2013-05-02 08:51:26

+1

这取决于SIM卡。你可以在这里找到一个有用的答案:http://stackoverflow.com/a/5134725/2198638。 – Brtle 2013-05-02 08:55:24

回答

5

对于GSM,电话号码是SIM卡,有的运营商就是不把它卡上,然后手机不知道它是什么,但在这种情况下,您的 应该得到一个empry字符串而不是null

如果运营商在您的SIM卡上存储号码,请转至Settings -> About Phone -> Status -> My phone Number。如果在那里显示unknown,那么您的号码不会存储在SIM卡上。

enter image description here

获取IMEI使用:

TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
imei_no = tm.getDeviceId(); 
+0

雅它显示未知....是否有任何其他方式获得手机号码(通过使用SIM卡号码或IMEI)? – Parmanand 2013-05-02 08:57:49

+3

我不认为有其他的方式..因为它的一切都取决于移动运营商公司(如vodaphone等)意味着他们不给我们手机号码,然后我们如何得到它.. – 2013-05-02 09:01:20

1

添加权限

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

this

+0

我已经添加了它...仍然没有工作 – Parmanand 2013-05-02 08:52:49

+1

有些时候它不起作用见http://stackoverflow.com/a/6797278/1051147 – 2013-05-02 08:56:23

1

你必须使用电话管理器;如果你没有发现接触没有。的用户; 您可以使用相同的电话管理类获得SIM卡和Android设备的维明号的SIM卡序列号...

添加权限:

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

导入:

import android.telephony.TelephonyManager; 

使用以下代码:

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

     // get IMEI 
     imei = tm.getDeviceId(); 

     // get SimSerialNumber 
     simSerialNumber = tm.getSimSerialNumber();