1.Вы можете получить доступ к идентификатору устройства Android с помощью службы gms.см. приведенный ниже пример:
private DeviceInfoProvider mDeviceInfo = new DeviceInfoProvider(Context)
String mDeviceId = DeviceInfoProvider.getDeviceId(Context);
Log.d("DEVICE_ID" , mDeviceId);
2. Используйте диспетчер телефонии, который предоставляет уникальный идентификатор (например, IMEI).См. Пример,
import android.telephony.TelephonyManager;
import android.content.Context;
// ...
TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
TELEPHONY_SERVICE);
/*
* getDeviceId() returns the unique device ID.
* For example,the IMEI for GSM and the MEID or ESN for CDMA phones.
*/
String deviceId = telephonyManager.getDeviceId();
/*
* getSubscriberId() returns the unique subscriber ID,
*/
String subscriberId = telephonyManager.getSubscriberId();
Это требует android.permission.READ_PHONE_STATE для вашего пользователя, что может быть трудно оправдать, исходя из типа приложения, которое вы сделали.
Устройства без служб телефонии, такие как планшеты, должны сообщать уникальный идентификатор устройства, который доступен через android.os.Build.SERIAL начиная с Android 2.3 Gingerbread.Некоторые телефоны, имеющие услуги телефонии, также могут определять серийный номер.Подобно тому, как не все устройства Android имеют серийный номер, это решение не является надежным.
При первой загрузке устройства генерируется и сохраняется случайное значение.Это значение доступно через Settings.Secure.ANDROID_ID.Это 64-разрядное число, которое должно оставаться постоянным в течение всего срока службы устройства.ANDROID_ID кажется хорошим выбором для уникального идентификатора устройства, потому что он доступен для смартфонов и планшетов.Чтобы получить значение, вы можете использовать следующий код:
String androidId = Settings.Secure.getString (getContentResolver (), Settings.Secure.ANDROID_ID);
Однако значение может измениться, если на устройстве выполнен сброс к заводским настройкам.Существует также известная ошибка с популярной трубкой от производителя, где каждый экземпляр имеет одинаковый ANDROID_ID.Очевидно, что решение не является надежным на 100%.
Использовать UUID.Поскольку требование для большинства приложений состоит в том, чтобы идентифицировать конкретную установку, а не физическое устройство, хорошим решением является получение уникального идентификатора для пользователя, если использовать класс UUID.Следующее решение было представлено Рето Мейером из Google в презентации ввода-вывода Google,
SharedPreferences sharedPrefs = context.getSharedPreferences(
PREF_UNIQUE_ID, Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);