Во-первых, получение мобильного номера пользователя противоречит этической политике, раньше это было возможно, но сейчас, согласно моим исследованиям, для этого нет надежного решения. Используя некоторый код, можно получить номер мобильного телефона, но никаких гарантий не может быть. это будет работать только в нескольких устройствах. После долгих исследований я нашел только три решения, но они работают не на всех устройствах.
Существует следующая причина, по которой мы не получаем.
1. Android-устройство и новая SIM-карта не хранят номер мобильного телефона, если номер мобильного телефона не доступен в устройстве и в симе, то как можно получить номер, если на любой старой SIM-карте есть номер мобильного телефона, то с помощью диспетчера телефонии можно число, в противном случае он вернет «ноль» или «» или «??????»
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
TelephonyManager tel= (TelephonyManager)this.getSystemService(Context.
TELEPHONY_SERVICE);
String PhoneNumber = tel.getLine1Number();
Примечание: - Я тестировал это решение на следующих устройствах Moto x, Samsung Tab 4, Samsung S4, Nexus 5 и Redmi 2 prime, но оно работает не каждый
раз он возвращает пустую строку, так что вывод бесполезен
- Этот метод работает только в Redmi 2 prime, но для этого нужно добавить
разрешение на чтение контакта в манифесте.
Примечание: - Это также не гарантированное и эффективное решение, я тестировал это решение на многих устройствах, но оно работало только в Redmi 2 prime
который является двойным сим устройством, он дает мне два мобильных номера, первый из которых
правильно, но второй не принадлежит моему второму симу, он принадлежит
Моя старая сим-карта, которой я не пользуюсь.
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");
String s1="";
if (object != null) {
do {
if (!((Cursor) (object)).moveToNext())
break;
// This is the phoneNumber
s1 =s1+"---"+ ((Cursor) (object)).getString(4);
} while (true);
((Cursor) (object)).close();
}
- В моем исследовании, которое я обнаружил ранее, можно было получить номер мобильного телефона, используя учетную запись WhatsApp, но теперь новая версия Whatsapp не сохраняет номер мобильного телефона пользователя.
Заключение : - У Android нет гарантированного решения, чтобы получить
номер мобильного телефона программно.
Предложение : - 1. Если вы хотите подтвердить номер мобильного пользователя, попросите
Пользователь может указать свой номер, с помощью otp вы можете проверить это.
- Если вы хотите идентифицировать устройство пользователя, для этого вы можете легко получить номер IMEI устройства.