0

Я хочу получить код страны пользователя без каких-либо разрешений, которые необходимо активно запрашивать в android M. Например, если пользователь находился в Китае, я бы хотел вернуться обратно. Я не хочу использовать «опасные» разрешения для этого - ни read_phone_state, чтобы пройти через TelephonyManager, ни местоположение, чтобы попытаться угадать на основе его GPS. Есть ли способ сделать это, и если да, то как?Android: способ получить код страны пользователя без каких-либо разрешений, которые необходимо активно запрашивать?

Я попытался, используя следующий код, но это может привести к неудачам, если пользователь устанавливает его языковые настройки отдельно от своей страны (например, пользователь в Индии устанавливает свой телефон к English_US):

Resources r = paramContext.getResources(); 
Configuration config = r.getConfiguration(); 
Locale currentLocale = config.locale; 
Log.d("TAG", "Country: " + currentLocale.getCountry()); 
+0

Это именно сообщение об ошибке, которое вы получаете, и какая инструкция генерирует его? – thetonrifles

+0

Пожалуйста, объясните ** точно **, что такое «код страны пользователя». Например, если гражданин США, пользующийся британской SIM-картой, находится в Швеции, что такое «код страны» этого пользователя? – CommonsWare

+0

@CommonsWare - в примере, который вы предоставили, это будет шведский код страны (я считаю, SE). Сим/гражданство не то, что я ищу. Я хочу код страны, чтобы я мог правильно форматировать номер телефона – Jon

ответ

2

Единственный способ вы можете определить физическое местоположение пользователя программным образом, необходимо разрешение dangerous.

Если вы не хотите запрашивать у пользователя разрешения, попросите пользователя указать его местоположение.

Я попытался, используя следующий код

Этот код не имеет ничего общего с физическим местоположением пользователя.