我们如何从Android平板电脑(Android 3.0 SDK HoneyComb)获取唯一设备ID?
我还发现我们可以使用以下方法获取唯一的Android设备ID: String deviceId = Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID);
但是Here它写的是 Although, it is not guaranteed that the Android ID will be an unique identifier.
。
我也经历了一些SO问题:
还提到了这篇文章:http://android-developers.blogspot.com/2011/03/identifying-app-installations.html。
但我很困惑 how do we get/have Unique Device ID from the Android Tablet type of Device?
答案 0 :(得分:21)
我知道这个问题已经过时了,但是由于Android ID无法保证能够正常工作,因此可能会找不到它,在某些情况下它甚至可能是空的,或者在root电话上很容易更改。
我所做的是将Android ID与WiFi MAC地址结合在一个生成UUID的方法中:
private void generateDeviceId() {
final String macAddr, androidId;
WifiManager wifiMan = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
macAddr = wifiInf.getMacAddress();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), macAddr.hashCode());
// Maybe save this: deviceUuid.toString()); to the preferences.
}
别忘了将权限添加到AndroidManifest。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
祝你好运!
答案 1 :(得分:5)
从Android 2.2开始,ANDROID_ID几乎可以保证是唯一的。
最近在Android开发人员博客上发现了an article。