在android(UUID)中生成唯一ID

时间:2016-10-25 10:10:43

标签: android

几个月来我一直在使用一个类生成一个在reintalls之间稳固的UUID。我的应用程序是关于折扣的,所以我依靠这个UUID限制每台设备的优惠券数量。

protected void getDeviceId(){
    try {
        Context context = cordova.getActivity().getApplicationContext();
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        String uuid;
        String androidID = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
        String deviceID = tm.getDeviceId();
        String simID = tm.getSimSerialNumber();

        if ("9774d56d682e549c".equals(androidID) || androidID == null) {
            androidID = "";
        }

        if (deviceID == null) {
            deviceID = "";
        }

        if (simID == null) {
            simID = "";
        }

        uuid = androidID + deviceID + simID;
        uuid = String.format("%32s", uuid).replace(' ', '0');
        uuid = uuid.substring(0, 32);
        uuid = uuid.replaceAll("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5");

        this.callbackContext.success(uuid);
    }catch(Exception e ) {
        this.callbackContext.error("Exception occurred: ".concat(e.getMessage()));
    }
}

这是我如何生成我的uuid的核心。事情是这个周末有人使用XT1032和Android 5.1能够在每次安装应用程序后重新生成不同的UUID,获得免费优惠券。我使用的这种方法可以以某种方式欺骗?也许用扎根手机?我在盲人中射击。我需要能够在安装之间创建可靠的UUID。

3 个答案:

答案 0 :(得分:9)

我之前使用过它并且对我来说工作正常。

public String createTransactionID() throws Exception{
    return UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
}

答案 1 :(得分:2)

您的UUID取决于三种不同的ID,所有ID都可以轻松更改。无法确定这是否是原因,但请查看此处的代码:

SSN(SIM序列号) getSimSerialNumber()获取附加的SIM卡的SSN。为同一设备生成不同UUID的简单方法是插入不同的SIM卡。我所知道的是繁琐的,但仍然可行。

<强> IMEI / MEID getDeviceId()返回IMEI或MEID。另一种方法是更改​​设备的IMEI。如果您只是谷歌&#34;更改手机IMEI没有root&#34;你将获得大量可行的结果。这可能是一种更简单的方法(如果是自动化的)。

Android设备ID 每次手机恢复时,根据文档更改ANDROID_ID。因此,用户只需通过恢复手机即可更改UUID

由于您的UUID基于三个独特ID链,因此欺骗系统就像链中最薄弱的环节一样简单。 ANDROID_ID是此链条中最强大的链接,我建议您仅使用它。 请参阅此link作为替代

答案 2 :(得分:1)

  

我需要能够在安装之间创建可靠的UUID。

如果这是唯一的标准,this答案中的提案是您最好的选择。请注意,设备恢复出厂设置后,ANDROID_ID 可能会更改,因此永远不会出现无法欺骗应用的情况。

大多数其他“UUID”可能已经在您注意到的应用安装之间发生了变化。

有关详细信息,请阅读Google Best Practices for Unique Identifiers。这是必读的。