Android 国家位置关系7

Android 国家位置关系7,android,Android,我正在构建一个需要用户所在国家/地区的应用程序。如果用户使用的是智能手机,我在获取国家信息方面没有问题 telephonyManager.getNetworkCountryIso() 但是,如果他们不使用sim卡,例如nexus 7,我如何实现这一点 任何帮助都将不胜感激 谢谢请尝试以下操作,以检查用户是在平板电脑上还是在手机上: TelephonyManager telephonyManager1 = (TelephonyManager)getSystemService(Context.TE

我正在构建一个需要用户所在国家/地区的应用程序。如果用户使用的是智能手机,我在获取国家信息方面没有问题

telephonyManager.getNetworkCountryIso()
但是,如果他们不使用sim卡,例如nexus 7,我如何实现这一点

任何帮助都将不胜感激


谢谢

请尝试以下操作,以检查用户是在平板电脑上还是在手机上:

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

if(telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) {
  // TABLET
}
else {
  // YOUR PREVIOUS CODE
}
如果用户在平板电脑中,您可以尝试使用区域设置?我知道这并没有告诉您位置,但也许您可以根据用户拥有的区域设置尝试查找:

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

希望有帮助

您可以获得用户的位置(粗略的近似值应该足够了),然后使用地理编码器查找近似地址以确定国家

事实上,你的问题与一个类似


但是在Android中,您现在可以内置地理编码器,因此无需专门调用Web服务并解码json。有关如何获取用户位置和如何检索位置,请参见。

就我个人而言,我会将逻辑扩展到如下内容:

  • 使用电话管理器
  • 如果没有调制解调器/SIM卡
  • 如果没有调制解调器/SIM卡,且WiFi已禁用
  • 如果没有调制解调器/SIM卡且WiFi和GPS都已禁用
通过这种方式,您可以覆盖尽可能多的场景


NB语言环境不会向您提供当前所在国家/地区,但取决于您的Android设备中选择的语言。也就是说,如果您的手机是俄语的,您将始终使用俄语。

Nexus 7不是智能手机,并且没有呼叫或发送短信的功能,因此我认为该设备不提供此选项。我知道它不是智能手机,我有一个…我也知道它没有sim卡..因此questionLocale不会给你当前位置。不知道是谁给了你-1,但我没有说解决方案是错误的。。)-1用于建议使用区域设置代替位置。哦,真的吗?:-)请告诉我其他选项,如果设备无法获取位置(无调制解调器、无WiFi、无GPS)?请更新我的答案,并说明如何使用区域设置。