+-

几个月来,我一直在使用一个类来生成一个在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.
最佳答案
您的UUID取决于三个不同的ID,所有ID都可以轻松更改.没有办法确定这是否是原因,但在这里查看代码:
SSN(SIM序列号)
getSimSerialNumber()获得附加的SIM卡的SSN.为同一设备生成不同UUID的简单方法是插入不同的SIM卡.我所知道的是繁琐的,但仍然可行.
IMEI / MEID
getDeviceId()返回IMEI或MEID.另一种方法是更改设备的IMEI.如果你只是谷歌“改变手机IMEI没有根”你会得到大量可行的结果.这可能是一种更简单的方法(如果是自动化的).
Android设备ID
ANDROID_ID根据每次手机恢复时的文档更改.因此,用户只需通过恢复手机即可更改UUID.
由于您的UUID基于三个独特的ID链,因此欺骗系统就像链中最薄弱的环节一样简单. ANDROID_ID是这个链中最强的链接,我建议你只使用它.作为替代方案,请参阅此link.
点击查看更多相关文章
转载注明原文:在android(UUID)中生成唯一ID - 乐贴网