2011-09-14 3 views
10

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

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

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

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

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

здесь productcateory будет однозначно определить локальное приложение и ссылаться на него. Но это одностороннее общение. Как вернуть ответ от точки вызова и динамически заполнять скрытое поле формы.

  1. С помощью сценариев веб-страницы мы можем хранить некоторые данные локально на клиентской машине и извлекать их позже. но область действия ограничена и никоим образом не связана с IMEI или номером IMSI.

  2. Есть ли способ получить привязку к мобильному браузерному приложению (помните, как и любое другое мобильное приложение) с веб-страницы и получить идентификационные данные через скрипты на моей странице?

  3. Есть ли какой-либо вариант, который предоставляет html5 в этом отношении? Я знаю, что в HTML5 есть тег localstorage, и можно хранить идентификатор в местоположении клиента и извлекать его позже. Но это ограничивается тем же устройством и тот же мобильный браузер, а также это другое решение, чтобы получить число IMEI/IMSI

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

~ inkriti

+0

Не думаю, что это возможно ... – Tobias

+3

Что вы просите - это способ отслеживать телефон пользователя таким образом, чтобы он мог 't control, только потому, что они посетили веб-страницу. Есть * причина * браузеры этого не позволяют. – Wyzard

ответ

7

Для очень веских причин это невозможно для веба-браузера, чтобы получить доступ к номеру IMEI или IMSI мобильного телефона, без некоторых подлого взлома, что Dev команды не ожидало.

Также браузер для Android не поддерживает плагины.

Ваш единственный вариант - создать родное приложение. Этот ответ содержит некоторую информацию, которая вам будет полезна: Programmatically obtain the phone number of the Android phone. Однако это не идеальное решение.

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

+0

Проблема с файлом cookie заключается в том, что cookie можно включить или отключить и даже удалить. IMEI и номер IMSI могут гарантировать, что это правильная комбинация телефона/симулятора, и мое приложение будет продолжать реагировать на правильного пользователя в будущем. – inkriti

+0

С точки зрения предложения cookie: похоже, что вы хотите отслеживать сеанс. Поэтому используйте javascript для проверки файла cookie. Если cookie не существует, генерирует уникальный идентификатор и записывает файл cookie. Затем используйте Ajax для вызова отдыха в веб-службу для записи уникального идентификатора в качестве сеанса. Каждый раз, когда вы хотите проверить сеанс, просто прочитайте файл cookie и используйте ajax для проверки его правильности. Предполагая, что вы храните его в постоянном файле cookie, он останется даже при закрытии браузера. Его можно удалить, и вам просто нужно написать свое веб-приложение таким образом, чтобы это произошло. –

+0

Хорошее предложение Майк. Благодарю. Моя основная идея - правильно отслеживать комбинацию устройств/сим, а не сеанс. Так что, даже если пользователь использует другой телефон со своим собственным симом, я могу отслеживать это и информировать пользователя о том же и просить его о следующем уровне аутентификации, чтобы открыть его конкретную разрешенную область. Также любая идея, как html5 localstorage отличается от постоянного сеанса? – inkriti

-2
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».

+2

ОП спросил о «доступном через браузер», ваш ответ не работает в веб-приложении – WarrenFaith

1
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-карте. Это возвращает то же, что и в Настройки-> о телефоне. Это может быть пустым, если неизвестно

+7

OP спросил «доступный через браузер», ваш ответ не работает в веб-приложении – WarrenFaith

0

Единственный надежный способ - написать приложение и отправить его SMS, а затем отследить номер на этом конце; при условии, что у абонента включен SMS/текстовый сервис. Это не будет работать на телефонах (планшетах).

Это не важно и не обязательно, и, вероятно, незаконно отслеживать устройство (IMEI); просто отследите абонента.

0

Оригинальная проблема, вероятно, закрыта, однако для будущей ссылки кого-либо (такого как я), который сталкивается с этим вопросом, было бы что-то вроде регистрации 2-фактора с подтверждением с помощью текста. Наиболее близким к тому, чтобы получить IMEI (невозможно без родных приложений), было бы заставить пользователя зарегистрироваться и включить текстовое подтверждение - номер мобильного телефона в большинстве случаев будет уникальным, но не уникальным при смене устройств, и некоторые предположения могут быть сделанные с клиентской стороны, чтобы угадать, какое устройство у них есть, вы могли бы пойти еще дальше и попросить их идентифицировать make/os своего устройства, если вы беспокоитесь об уникальности. Однако в большинстве случаев использования подтверждение мобильного номера будет выполнять работу

Смежные вопросы