Подтвердить что ты не робот

Получите мой номер телефона в android

Как я могу получить свой номер телефона в android

когда я использую:

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

и используйте:

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

return Null

почему?

4b9b3361

Ответ 1

Из документации:

Возвращает строку телефонного номера для строки 1, например, MSISDN для телефона GSM. Возвращает null, если он недоступен.

Итак, вы все сделали правильно, но номер телефона не сохранен.

Если вы получите null, вы можете отобразить что-то, чтобы пользователь мог ввести номер телефона самостоятельно.

Ответ 2

Если вызываемая вами функция возвращает null, это означает, что ваш номер телефона не зарегистрирован в вашем списке контактов.

Если вместо номера телефона вам нужен уникальный номер, вы можете использовать серийный номер сим-карты:

    TelephonyManager telemamanger = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    String getSimSerialNumber = telemamanger.getSimSerialNumber();  

Ответ 3

Отвечено здесь

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

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

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

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

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

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

Предлагаемое решение:

  • Получить пользовательский номер телефона как ручной ввод от пользователя.
  • Отправьте код на мобильный номер пользователя с помощью SMS.
  • Попросите пользователя ввести код для подтверждения номера телефона.
  • Сохранить номер в sharedpreference.

Сделайте вышеуказанные 4 шага как однократную активность во время первого запуска приложения. Позже, когда требуется номер телефона, используйте значение, доступное в общих предпочтениях.

Ответ 4

private String getMyPhoneNumber(){
    TelephonyManager mTelephonyMgr;
    mTelephonyMgr = (TelephonyManager)
        getSystemService(Context.TELEPHONY_SERVICE); 
    return mTelephonyMgr.getLine1Number();
}

private String getMy10DigitPhoneNumber(){
    String s = getMyPhoneNumber();
    return s.substring(2);
}

Ответ 5

Метод 1:

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

С разрешением ниже

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

Метод 2:

Есть другой способ, которым вы сможете получить свой номер телефона, я не тестировал его на нескольких устройствах, но над кодом не работает каждый раз.

Попробуйте ввести код:

String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"};
Object object = getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"),
        main_data, "mimetype=?",
        new String[]{"vnd.android.cursor.item/phone_v2"},
        "is_primary DESC");
if (object != null) {
    do {
        if (!((Cursor) (object)).moveToNext())
            break;
        String s1 = ((Cursor) (object)).getString(4);
    } while (true);
    ((Cursor) (object)).close();
}

Вам нужно будет добавить эти два разрешения.

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

Надеюсь, это поможет, Спасибо!

Ответ 6

Robi Code работает для меня, просто поставьте if! null, чтобы, если номер телефона равен нулю, пользователь может заполнить номер телефона самим.

editTextPhoneNumber = (EditText) findViewById(R.id.editTextPhoneNumber);
TelephonyManager tMgr;
tMgr= (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
if (mPhoneNumber != null){
editTextPhoneNumber.setText(mPhoneNumber);
}