Как получить программный код устройства нет

Я пытаюсь получить телефон без использования следующего метода:

private String getMyPhoneNumber(){
        TelephonyManager mTelephonyMgr;

        mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
        //String imsi = mTelephonyMgr.getSubscriberId();
        String phnNo=mTelephonyMgr.getLine1Number();
        if (phnNo==null) {
            phnNo=  getNoFromWatsApp();
        }

        return phnNo;
    }
    private String  getNoFromWatsApp(){
        AccountManager am = AccountManager.get(this);
        Account[] accounts = am.getAccounts();
        String phoneNumber="";

        for (Account ac : accounts) {
            String acname = ac.name;
            String actype = ac.type;
            // Take your time to look at all available accounts
            if(actype.equals("com.whatsapp")){
                phoneNumber = ac.name;
            }
        }
        return phoneNumber;
    }

Но каждый раз, когда я получаю телефон без пробелов. Я даже пытался получить телефон от wats, но его удержание "WatsApp" вместо телефона нет. Есть ли другой способ решить эту проблему?

Ответ 1

Используйте код ниже:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

В AndroidManifest.xml дайте следующее разрешение:

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

Но помните, что этот код не всегда работает, поскольку номер сотового телефона зависит от SIM-карты и оператора сети/оператора сотовой связи.

Кроме того, попробуйте проверить Телефон → Настройки → О программе → Идентификация телефона. Если вы можете просмотреть номер там, вероятность получить номер телефона выше кода выше. Если вы не можете просмотреть номер телефона в настройках, вы не сможете получить этот код!