国家位置nexus 7

时间:2013-07-22 09:14:40

标签: android

我正在构建一个需要用户所在国家/地区的应用程序。如果用户使用的是智能手机,我可以轻松获取该国家/地区

telephonyManager.getNetworkCountryIso()

但是如果他们不使用SIM卡,即如何使用它,我怎么能实现这个目标呢?

非常感谢任何帮助

由于

3 个答案:

答案 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(); 

希望它有所帮助!

答案 1 :(得分:0)

您可以获取用户位置(粗略近似值就足够了),然后使用地理编码器查找大致地址以确定国家/地区。

事实上,您的问题类似于this一个。

但在Android中,你现在可以内置Geocoder,因此无需专门调用webservice并解码json。有关如何获取用户位置的信息,请参阅Location Guide;有关如何检索位置的信息,请参阅Geocoder API

答案 2 :(得分:0)

就个人而言,我会将逻辑扩展到这样的东西:

  • 使用TelephonyManager
  • 如果没有调制解调器/ SIM卡,use WiFi
  • 如果没有调制解调器/ SIM卡,并禁用WiFi,use GPS
  • 如果没有调制解调器/ SIM卡且禁用了WiFi和GPS,use Locale

这样你就可以覆盖尽可能多的场景。

NB 区域设置不会向您提供当前的国家/地区,但取决于您在Android设备中选择的语言。即,如果您的手机是俄语,您将始终获得俄罗斯。