设备IMEI锁定平板电脑

时间:2011-06-24 05:17:23

标签: android locking imei device-instance-id

在我的应用程序中,我曾经使用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。我应该依赖哪个id? Mac地址或其他什么?此外,每当我需要询问潜在用户时,请将他们的设备ID发送给我......他们如何做到这一点?

3 个答案:

答案 0 :(得分:0)

如果用户足够精明,可以在模拟器中运行您的APK,那么他就足够精明,可以反编译并删除您的支票。

此外,如果我是你,我会去注册和登录用户提供更多功能,而不是试图阻止未注册的用户启动你的应用程序。没有什么比由于这种安全功能导致功能障碍的应用程序更令人烦恼(想想Steam或Windows Live或Ubisoft臭名昭着的拒绝付费用户)。它只会促使人们盗用你的应用程序。

答案 1 :(得分:0)

在我写here时,使用IMEI识别某个设备并不是一个好主意。

答案 2 :(得分:0)

IMEI检查可能是个好主意,如果专门为手机提供,使用手机功能,但它取决于国家法规。在其移动网络中实施EIR(设备身份登记)登记的国家很少。它检查被盗和伪造的IMEI,它们是灰色和黑色标记的。黑色标记的imei不能使用手机功能,怀疑灰色标记并根据法律需要进行追踪。如果是这种情况,那么使用imei检查将是有价值的。