android.Settings.Secure.ANDROID_ID

我正在开发一个Android应用程序,我打算使用LVL库来检查谷歌播放许可证。

在阅读LVL文档后,我已经阅读了我必须获取android.Settings.Secure.ANDROID_ID来混淆谷歌播放响应。

但是我也读过从TelephonyManager获得的ANDROID_ID对于不同的设备有时是相同的。

首先,它在2.2之前的Android版本(“Froyo”)上不是100%可靠的。 此外,在一个主要制造商的stream行手机中至less有一个广泛观察到的错误,其中每个实例具有相同的ANDROID_ID

真的吗?

谢谢

Solutions Collecting From Web of "android.Settings.Secure.ANDROID_ID"

考虑我的情况:

几个Android设备上的相同序列号。 Adb是无用的。 我如何更改序列号?

所以我没有解决与亚行的问题,但要确定一个Android设备我使用这个代码(使用getDeviceId(context) ):

 public static String getDeviceId(Context context) { String id = getUniqueID(context); if (id == null) id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); return id; } private static String getUniqueID(Context context) { String telephonyDeviceId = "NoTelephonyId"; String androidDeviceId = "NoAndroidId"; // get telephony id try { final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephonyDeviceId = tm.getDeviceId(); if (telephonyDeviceId == null) { telephonyDeviceId = "NoTelephonyId"; } } catch (Exception e) { } // get internal android device id try { androidDeviceId = android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); if (androidDeviceId == null) { androidDeviceId = "NoAndroidId"; } } catch (Exception e) { } // build up the uuid try { String id = getStringIntegerHexBlocks(androidDeviceId.hashCode()) + "-" + getStringIntegerHexBlocks(telephonyDeviceId.hashCode()); return id; } catch (Exception e) { return "0000-0000-1111-1111"; } } public static String getStringIntegerHexBlocks(int value) { String result = ""; String string = Integer.toHexString(value); int remain = 8 - string.length(); char[] chars = new char[remain]; Arrays.fill(chars, '0'); string = new String(chars) + string; int count = 0; for (int i = string.length() - 1; i >= 0; i--) { count++; result = string.substring(i, i + 1) + result; if (count == 4) { result = "-" + result; count = 0; } } if (result.startsWith("-")) { result = result.substring(1, result.length()); } return result; } 

我在调用Web服务时使用它来识别特定的应用程序安装。 正如你所看到的,我也尝试了不同的方式,也基于TelephonyManager和ANDROID_ID。

我得到的是一个像xxxx-xxxx-xxxx-xxxx这样的string,其中x是一个hex字符。

我买了很多低成本的中国平板电脑,所有这些都有相同的DEVICE_ID相同的序列号 ! 所以我的解决scheme 目前运行良好。

考虑到你引用的段落来自Google本身 ,是的,这是真的。