Android平板电脑 - 获取唯一设备ID

时间:2011-04-06 06:56:02

标签: android

我们如何从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问题:

  1. Is there a unique Android device ID?
  2. How to find serial number of Android device?
  3. 还提到了这篇文章: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?

2 个答案:

答案 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