Я обычно получаю страну из языка устройства. Это работает, но теперь я должен признать Бразилию. И большинство устройств имеют только португальский (pt_PT) вариант, а не португальский (Бразилия).
Я проверил эту тему: Где я? - Получить страну
Методы
String locale = context.getResources().getConfiguration().locale.getCountry();
String locale = context.getResources().getConfiguration().locale.getDisplayCountry();
Все еще только язык, не помогает.
Еще есть предложение с сим-картой, но я не уверен, что это будет надежно работать (у всех ли сим-карт такая уникальная идентификация?), это тоже немного не то, что мне нужно, потому что пользователь не может это изменить (в том случае, если это была настройка), и это исключит пользователей, использующих устройство без сим-карты (возможно, они просто используют WLAN).
Также есть предложение геолокации, но оно, вероятно, не будет работать на устройствах, на которых оно отключено. Или я ошибаюсь?
Если ничего не помогает, я бы сделал настройку диалогового окна или меню в своем приложении, чтобы пользователь мог выбрать его там. Но сначала я хотел бы подтвердить, есть ли какая-либо надежная возможность с устройством.