Ответ 1
Начиная с Android 2.2, ANDROID_ID в значительной степени гарантированно будет уникальным.
Недавно была опубликована статья статьи об этом в блоге разработчиков Android.
Как получить уникальный идентификатор устройства с 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?
Начиная с Android 2.2, ANDROID_ID в значительной степени гарантированно будет уникальным.
Недавно была опубликована статья статьи об этом в блоге разработчиков Android.
Я знаю, что этот вопрос старый, но он может отключить кого-то, кто его найдет, поскольку идентификатор 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" />
Удачи!