2013-07-22 2 views
0

им здание приложения, которое требует страны пользователя находится. У меня нет проблем с получением страны, если пользователь использует смартфон сСтрана расположения нексус 7

telephonyManager.getNetworkCountryIso() 

, но как я могу добиться этого, если они не используют сим, т. е. связь 7 ???

Любая помощь будет принята с благодарностью

Благодаря

+0

Nexus 7 не является смартфоном и не имеет возможности звонить или отправлять смс, поэтому я не думаю, что эта опция доступна для этого устройства. – hardartcore

+0

Я знаю, что это не смартфон, у меня есть один ... я тоже знаю, что у него нет сим ... после вопроса –

ответ

1

Попробуйте это для того, чтобы проверить, является ли пользователь на планшете или по телефону:

TelephonyManager telephonyManager1 = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

if(telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) { 
    // TABLET 
} 
else { 
    // YOUR PREVIOUS CODE 
} 

Может быть, вы можете попробовать с Язык, если пользователь находится в планшете? Я знаю, что это не дает вам место, но, может быть, вы можете попытаться выяснить, в соответствии с Locale пользователя:

String locale = context.getResources().getConfiguration().locale.getCountry(); 

Надеется, что это помогает!

+0

Locale не даст вам текущее местоположение. –

+0

Не знаю, кто вам дал -1, но я не сказал, что решение неверно. ;) –

+0

Не понимаю -1 ... –

0

Вы можете получить местоположение пользователей (приблизительное приближение должно быть достаточным), а затем найти приблизительный адрес с помощью геокодирования, чтобы определить страну.

На самом деле, ваш вопрос аналогичен this.

Но в Android вы теперь получаете встроенный Geocoder, поэтому не нужно специально вызвать веб-сервис и декодировать json. См. Location Guide о том, как получить местоположение пользователя и Geocoder API для получения местоположения.

0

Лично я хотел бы расширить логику на что-то вроде этого:

  • Использование TelephonyManager
  • Если модем/SIM присутствует, use WiFi
  • Если модем/SIM присутствует, и Wi-Fi является инвалидов, use GPS
  • Если модем/SIM присутствует и как Wi-Fi и GPS отключены, use Locale

Таким образом, вы могли бы охватить как можно больше сценариев.

NB Язык не предоставит вам свою текущую страну, но зависит от того, какой язык выбран на вашем Android-устройстве. I.e., если ваш телефон на русском языке, вы будете всегда получить Россию.

+0

-1, предлагая локаль в качестве замены для местоположения. http://stackoverflow.com/a/7976432/319204 – TheCodeArtist

+0

О, правда? :-) Пожалуйста, скажите мне другие варианты, если устройство не имеет возможности получить местоположение (без модема, нет WiFi, нет GPS)? –

+0

Обновлен мой ответ с примечанием об использовании Locale. –

Смежные вопросы