如何在Android中获取当前的SIM卡号码?

Use*_*ser 38 android phone-number sim-card telephonymanager

我想知道Android中的用户手机号码.我使用了这段代码,但我没有得到数字.

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
        String n = tm.getLine1Number();
Run Code Online (Sandbox Code Playgroud)

允许:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

是否必须在android手机中保存号码 settings --> about phone --> status --> myphone number

有什么想法吗?

Dip*_*iya 27

我认为sim序列号和sim号是唯一的.您可以尝试使用此方法获取SIM序列号并获取SIM卡号,并且不要忘记在清单文件中添加权限.

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();
Run Code Online (Sandbox Code Playgroud)

并将以下权限添加到您的Androidmanifest.xml文件中.

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

如果有任何问题,请告诉我.


小智 7

获取电话号码,IMEI和SIM卡ID

TelephonyManager tm = (TelephonyManager) 
            getSystemService(Context.TELEPHONY_SERVICE);        
Run Code Online (Sandbox Code Playgroud)

对于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();
Run Code Online (Sandbox Code Playgroud)

手机的电话号码,使用getLine1Number()(某些设备不返回电话号码)

    //---get the phone number---
    String telNumber = tm.getLine1Number();
    if (telNumber != null)        
        Toast.makeText(this, "Phone number: " + telNumber, 
        Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

手机的IMEI号码,使用getDeviceId()

    //---get the IMEI number---
    String IMEI = tm.getDeviceId();
    if (IMEI != null)        
        Toast.makeText(this, "IMEI number: " + IMEI, 
        Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

需要权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)


Cho*_*hun 6

更新:由于Whatsapp已停止将电话号码作为帐户名称公开,因此不再提供此答案,请忽略此答案.

================================================== ===============================

已经差不多6个月了,我相信我应该用你可能想要考虑的替代解决方案来更新它.

截至今天,您可以使用AccountManager依赖另一个大型应用程序Whatsapp.数以百万计的设备安装了此应用程序,如果您无法通过TelephonyManager获取电话号码,您可以试一试.

允许:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Run Code Online (Sandbox Code Playgroud)

码:

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);
}
Run Code Online (Sandbox Code Playgroud)

检查whatsapp帐户的actype

if(actype.equals("com.whatsapp")){
    String phoneNumber = ac.name;
}
Run Code Online (Sandbox Code Playgroud)

当然,如果用户没有安装Whatsapp,你可能无法得到它,但无论如何都值得尝试.并记住你应该总是要求用户确认.


Nir*_*ara -20

您可以使用 TelephonyManager 来执行此操作:

TelephonyManager t = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = t.getLine1Number();
Run Code Online (Sandbox Code Playgroud)

你用过吗

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

  • 请阅读问题描述。不要仅仅通过阅读标题来回答。 (7认同)