БлогNot. Можно ли в Java2 ME определить IMEI телефона?

Можно ли в Java2 ME определить IMEI телефона?

Ответ на вопрос, который, в общем, остаётся распространённым. Краткий - нельзя, подробнее ниже :)

В общем виде этого сделать нельзя просто потому, что Java работает отдельно от железа телефона, это виртуальная машина.

Используя стандартные API профилей MIDP, такую информацию получить невозможно. Однако, некоторые производители телефонов в своих реализациях ява-машины добавляют свойство, содержащее IMEI. Обычно его можно получить с помощью System.getProperty("название"). "Название" зависит от конкретного производителя, к примеру, попадается следующее:

Nokia
System.getProperty("phone.imei");
System.getProperty("com.nokia.IMEI");
Мидлет должен быть подписан, если это не серия S60.

Sony-Ericsson
System.getProperty("com.sonyericsson.imei");
На некоторых моделях не работает, просто возвращает null.

Motorola
System.getProperty("IMEI");
System.getProperty("com.motorola.IMEI");
Или то, или то

Samsung
System.getProperty("com.samsung.imei");
редко где работает.

Siemens
System.getProperty("com.siemens.imei");

Поэтому все "противоугонные" и т.п. мидлеты всегда не кроссплатформенны, а "заточены" под модель или производителя.

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

do {
 String My_IMEI = System.getProperty("очередной код из набора");
 if (My_IMEI != null) {
  //Ура, мы его нашли
  break;
 }
} while (не кончились варианты);

Сразу же не советую использовать IMEI для защиты приложения или определения уникальности копии мидлета.

1. Часто сам IMEI недостоверен/неуникален, особенно у "китайцев".

2. Такая защита легко ломается.

Более-менее надёжным подходом к защите мобильных приложений можно считать лишь хранение каких-либо жизненно важных "частей" мидлета (кусков кода, исходных данных, паролей) на сервере. Платой за это станет необходимость подписывать мидлет (или юзеру каждый раз соглашаться с отправкой данных в сеть). Ну и плюс мобильный интернет-траффик у нас пока не бесплатный :)

 К оригиналу статьи

11.04.2010, 04:02 [9229 просмотров]


теги: безопасность мобильник java2me

К этой статье пока нет комментариев, Ваш будет первым