我想知道在Android的用户手机号码。 我用这个代码,但我没有变号。
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String n = tm.getLine1Number();
允许:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
是不是必须保存数Android手机settings --> about phone --> status --> myphone number
在这个任何想法?
我认为,SIM卡序列号和SIM卡号码是唯一的。 你可以尝试一下本作获得SIM卡序列号,并得到SIM卡号码,不要忘记在manifest文件添加权限。
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"/>
让我知道如果有任何问题。
获取电话号码,IMEI和SIM卡ID
TelephonyManager tm = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
对于SIM卡,使用getSimSerialNumber()
//---get the SIM card ID---
String simID = tm.getSimSerialNumber();
if (simID != null)
Toast.makeText(this, "SIM card ID: " + simID,
Toast.LENGTH_LONG).show();
您的手机电话号码,使用getLine1Number()(有些设备的不要回的电话号码)
//---get the phone number---
String telNumber = tm.getLine1Number();
if (telNumber != null)
Toast.makeText(this, "Phone number: " + telNumber,
Toast.LENGTH_LONG).show();
IMEI号码的手机,使用getDeviceId()
//---get the IMEI number---
String IMEI = tm.getDeviceId();
if (IMEI != null)
Toast.makeText(this, "IMEI number: " + IMEI,
Toast.LENGTH_LONG).show();
需要的权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
更新:这个答案是不再作为WhatsApp的已经停止暴露的电话号码为帐户名,请忽略此答案。
================================================== ===============================
它已经快6个月,我认为我应该和你可能要考虑一个替代解决方案更新此。
到今天为止,你可以依靠的另一大应用WhatsApp的,使用的AccountManager。 数以百万计的设备已经安装了这个应用程序,如果你不能通过TelephonyManager获取电话号码,你可以给这个一杆。
允许:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
码:
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
ArrayList<String> googleAccounts = new ArrayList<String>();
for (Account ac : accounts) {
String acname = ac.name;
String actype = ac.type;
// Take your time to look at all available accounts
System.out.println("Accounts : " + acname + ", " + actype);
}
检查actype的WhatsApp的帐户
if(actype.equals("com.whatsapp")){
String phoneNumber = ac.name;
}
当然,你可能不会得到它,如果用户没有安装了WhatsApp,但它值得一试无妨。 请记住,你应该总是询问用户确认。
你拥有了一切正确的,但问题是getLine1Number()
函数。
getLine1Number() -此方法返回线1的电话号码串,即MSISDN用于GSM电话。 返回NULL,如果它是不可用的。
这种方法只适用于少数手机,但并非所有手机。
所以,如果你需要根据SIM(比调用其他)来执行操作,那么你应该使用getSimSerialNumber()
它始终是唯一的 , 有效的 ,它始终存在 。
您可以使用TelephonyManager做到这一点:
TelephonyManager t = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String number = t.getLine1Number();
你用过
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>