Получить номер IMEI/номер телефона/номер мобильного телефона через мобильный браузер
Ниже приведен сценарий:
У меня есть веб-приложение, доступное через мобильный браузер.
Мне нужно обнаружить мобильное устройство IMEI и sim IMSI всякий раз, когда пользователь нажимает на ссылку на моей странице приложения, доступной через веб-браузер. Это отслеживание одного и того же устройства с той же SIM-картой и предоставление ему следующего уровня доступа. Пользователь не может отслеживаться с помощью loginid, поскольку на моей странице нет опции входа пользователя.
Вопрос заключается в том, как получить уникальный идентификатор устройства/идентификатор SIM-карты через мобильный браузер для определенного мобильного устройства.
Пока я сосредоточен на мобильных устройствах на базе Android. Но цель состоит в том, чтобы сделать его общим для устройств.
Фокус большинства идей заключается в том, каков доступ к браузеру по телефону и его приложению?
здесь productcateory однозначно идентифицирует локальное приложение и вызывает его. Но это одностороннее общение. Как вернуть ответ от точки вызова и динамически заполнить какое-то скрытое поле формы.
-
С помощью скриптов веб-страниц мы можем хранить некоторые данные локально на клиентской машине и извлекать их позже. но область действия ограничена, и она никак не связана с номером IMEI или IMSI.
-
Есть ли способ получить привязку к мобильному браузерному приложению (помните, как и любое другое мобильное приложение) с веб-страницы и получить идентификационные данные через скрипты на моей странице?
-
Есть ли какой-либо вариант, который предоставляет html5 в этом отношении? Я знаю, что в HTML5 есть тег localstorage, и можно хранить идентификатор в местоположении клиента и извлекать его позже. Но это ограничивается одним и тем же устройством и тем же мобильным браузером, а также это другое решение для получения номера imei/imsi
Сообщите мне, есть ли другой вариант, не спрашивая у пользователя установки локального приложения или плагина браузера на устройстве?
~ inkriti
Ответы
Ответ 1
По очень веским причинам веб-браузер не может получить доступ к номерам IMEI или IMSI мобильного телефона без каких-либо подлых взломов, которые команды разработчиков не ожидали.
Также браузер Android не поддерживает плагины.
Ваш единственный вариант - создать собственное приложение. В этом ответе есть информация, которая вам будет полезной: Программно получить номер телефона телефона Android. Однако это не идеальное решение.
Я также спросил бы, почему вы хотите получить доступ к номеру телефона пользователя? Если его просто отслеживать сеанс, просто используйте javascript для генерации уникального идентификатора и сохраните его в файле cookie.
Ответ 2
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String number = tm.getLine1Number();
и добавьте это следующее разрешение в ваш AndroidManifest.xml
файл
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Вы также можете использовать функцию getDefault():
String phoneNumber = TelephonyManager.getDefault().getLine1Number();
Но это снова зависит от способа кодирования номера на SIM-карте. Это возвращает то же, что и в Настройки- > о телефоне.
Это может быть null, если неизвестно
Ответ 3
Единственный надежный способ - написать приложение и отправить ему SMS-сообщение, а затем отслеживать номер на этом конце; при условии, что у абонента включен SMS/текстовый сервис. Это не будет работать на телефонах (планшетах).
Это не важно и не обязательно, и, вероятно, незаконно отслеживать устройство (IMEI); просто отследите абонента.
Ответ 4
Исходная проблема, вероятно, закрыта, однако для будущей ссылки кого-либо (такого как я), который сталкивается с этим вопросом, будет что-то вроде регистрации с 2-факторами с подтверждением через текст. Наиболее близким к тому, чтобы получить IMEI (невозможно без родных приложений), было бы заставить пользователя зарегистрироваться и включить текстовое подтверждение - номер мобильного телефона в большинстве случаев будет уникальным, но не уникальным при смене устройств, и некоторые предположения могут быть сделанные с клиентской стороны, чтобы угадать, какое устройство у них есть, вы могли бы пойти еще дальше и попросить их идентифицировать make/os своего устройства, если вы беспокоитесь об уникальности. Однако в большинстве случаев использования подтверждение мобильного номера будет выполнять работу
Ответ 5
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// get IMEI
String imei = tm.getDeviceId();
String phone = tm.getLine1Number();
или попробуйте это
private String getMyPhoneNumber(){
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
return mTelephonyMgr.getLine1Number();
}
private String getMy10DigitPhoneNumber(){
String s = getMyPhoneNumber();
return s.substring(2);
}
но он не всегда надежный, например, для нетелефонного устройства. Вам также нужно будет добавить разрешение "android.permission.READ_PHONE_STATE".