Получить номер IMEI/номер телефона/номер мобильного телефона через мобильный браузер

Ниже приведен сценарий: У меня есть веб-приложение, доступное через мобильный браузер. Мне нужно обнаружить мобильное устройство IMEI и sim IMSI всякий раз, когда пользователь нажимает на ссылку на моей странице приложения, доступной через веб-браузер. Это отслеживание одного и того же устройства с той же SIM-картой и предоставление ему следующего уровня доступа. Пользователь не может отслеживаться с помощью loginid, поскольку на моей странице нет опции входа пользователя.

Вопрос заключается в том, как получить уникальный идентификатор устройства/идентификатор SIM-карты через мобильный браузер для определенного мобильного устройства. Пока я сосредоточен на мобильных устройствах на базе Android. Но цель состоит в том, чтобы сделать его общим для устройств.

Фокус большинства идей заключается в том, каков доступ к браузеру по телефону и его приложению?

  • В ссылке браузера мы можем открыть локальное приложение следующим образом:

    <a href="productcateory://<productid>/<customerid>">Get Details</a> 
    

здесь 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".