В моем приложении я блокировал приложение с помощью кода IMEI. Я имею в виду, что при запуске приложение проверяет IMEI устройства и сравнивает его со списком разрешенных устройств. Если устройство находится в списке, пользователь может продолжить работу, в противном случае оно выручает:
public boolean checkIMEI(Activity activity)
{
TelephonyManager tm=(TelephonyManager )activity.getSystemService(Context.TELEPHONY_SERVICE);
if(tm==null)
{
Log.v(TAG, "Can't get telephony service");
new MessageBox(activity, "Can't get telephony service. Forcing shut down!");
return false;
}
//encrypted IMEIs list
String[] vals=activity.getResources().getStringArray(R.array.imeis);
//real device IMEI
String deviceId=tm.getDeviceId();
if(deviceId==null || deviceId.length() < 2)
{
Log.v(TAG, "Looks like emulator - bail out!");
Toast.makeText(activity, "This special version not intended to run in this device!", 5000).show();
return false;
}
boolean valid=false;
for(String val:vals)
{
String imei=Checker.decryptTemp(val); //decrypt IMEIs
if(imei.equalsIgnoreCase(deviceId))
{
valid=true;
break;
}
}
if(!valid)
{
Log.v(TAG, "Invalid device IMEI!");
return false;
}
return true;
}
Проблема с планшетами Android, не оснащенными услугами телефонии. Таким образом, эти устройства не имеют IMEI. На какой идентификатор мне положиться? Mac-адрес или что-то еще? Также каждый раз, когда мне нужно попросить потенциальных пользователей прислать мне свой идентификатор устройства ... Как они могут это сделать?