Подтвердить что ты не робот

Android Tablet - получите уникальный идентификатор устройства

Как получить уникальный идентификатор устройства с Android-планшета (Android 3.0 SDK HoneyComb)?

Я также обнаружил, что мы можем получить идентификатор устройства Android, который является уникальным, используя: String deviceId = Settings.System.getString(getContentResolver(),                               Settings.System.ANDROID_ID);

Но Здесь написано, что 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?

4b9b3361

Ответ 1

Начиная с Android 2.2, ANDROID_ID в значительной степени гарантированно будет уникальным.

Недавно была опубликована статья статьи об этом в блоге разработчиков Android.

Ответ 2

Я знаю, что этот вопрос старый, но он может отключить кого-то, кто его найдет, поскольку идентификатор Android не имеет никаких гарантий для работы, он может даже быть пустым в некоторых случаях или легко изменяться на корневых телефонах.

То, что я сделал, это комбинировать идентификатор Android с MAC-адресом WiFi в методе, который генерирует 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" /> 

Удачи!