-->

如何让Android的当前的SIM卡号码?(How to get current SIM card

2019-07-17 14:41发布

我想知道在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

在这个任何想法?

Answer 1:

我认为,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"/>

让我知道如果有任何问题。



Answer 2:

获取电话号码,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"/>


Answer 3:

更新:这个答案是不再作为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,但它值得一试无妨。 请记住,你应该总是询问用户确认。



Answer 4:

你拥有了一切正确的,但问题是getLine1Number()函数。

getLine1Number() -此方法返回线1的电话号码串,即MSISDN用于GSM电话。 返回NULL,如果它是不可用的。

这种方法只适用于少数手机,但并非所有手机。

所以,如果你需要根据SIM(比调用其他)来执行操作,那么你应该使用getSimSerialNumber() 它始终是唯一的有效的 ,它始终存在



Answer 5:

您可以使用TelephonyManager做到这一点:

TelephonyManager t = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = t.getLine1Number();

你用过

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


文章来源: How to get current SIM card number in Android?