Что сработало для меня:
Resources.getSystem().getConfiguration().locale;
Resource.getSystem () возвращает глобальный объект общих ресурсов, который предоставляет доступ только к системным ресурсам (без ресурсов приложения) и не настроен для текущего экрана.(нельзя использовать единицы измерения, не изменяется в зависимости от ориентации и т. д.).
Поскольку getConfiguration.locale
устарело, предпочтительным способом получения основного языкового стандарта в нуге Android является:
Resources.getSystem().getConfiguration().getLocales().get(0);
Чтобы гарантировать совместимость с предыдущими версиями Android, возможным решением будет простая проверка:
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
//noinspection deprecation
locale = Resources.getSystem().getConfiguration().locale;
}
Обновление
Начиная с библиотеки поддержки 26.1.0
вам не нужно проверять версию Android, поскольку она предлагает удобный метод обратной совместимости getLocales()
.
Просто позвоните:
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());