Можно ли в 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 [9277 просмотров]