Я в приложении для индефикации пользователя использую uuid девайса. Недавно начал использовать такую систему. Так вот в настаящее время я использую такой код для получения uuid:
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return "Consider calling";
}
String id = manager.getDeviceId();
но потом замечаю на сервере что часто приходит Дефолтный uuid (а значит что getDeviceId() возращает null). Есть ли какой то способ получения сто процентов uuid?
Дело в том, что разрешение READ_PHONE_STATE входит в список Dangerous permissions, поэтому если пользователь не предоставил разрешение на доступ, то вы ничего и не получите
Советую прочитать следующие статьи и выбрать наиболее подходящую реализацию получения/генерации уникального идентификатора исходя из ваших задач:
Best practices for unique identifiers
Identifying App Installations
How to retrieve an Unique ID to identify Android devices
Ответ выше достаточно полный, но все-таки приведу код моего варианта решения: String uniqueID = UUID.randomUUID().toString();
Потребуется импорт java.util.UUID;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей