【问题标题】:Country location nexus 7国家位置关系 7
【发布时间】:2013-07-22 09:14:39
【问题描述】:

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

telephonyManager.getNetworkCountryIso()

但是,如果他们不使用 sim,即 nexus 7,我怎么能做到这一点???

任何帮助将不胜感激

谢谢

【问题讨论】:

  • Nexus 7 不是智能手机,没有打电话或发送短信的功能,所以我认为该设备不支持此选项。
  • 我知道它不是智能手机,我有一个……我也知道它没有 SIM 卡……因此问题

标签: android


【解决方案1】:

试试这个以检查用户是在平板电脑上还是在手机上:

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

希望对你有帮助!

【讨论】:

  • 区域设置不会为您提供当前位置。
  • 不知道谁给了你-1,但我没有说解决方案是错误的。 ;)
【解决方案2】:

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

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

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

注意区域设置不会为您提供您当前所在的国家/地区,但取决于您在 Android 设备中选择的语言。即,如果您的手机是俄语,您将总是得到俄罗斯。

【讨论】:

  • -1 建议使用区域设置代替位置。 stackoverflow.com/a/7976432/319204
  • 哦,真的吗? :-) 如果设备无法获取位置(没有调制解调器、没有 WiFi、没有 GPS),请告诉我其他选项?
  • 更新了我的答案,并附上了关于使用 Locale 的说明。
【解决方案3】:

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

其实你的问题和this一个差不多。

但在 Android 中,您现在获得了内置的 Geocoder,因此无需专门调用 Web 服务并解码 json。有关如何获取用户位置的信息,请参阅Location Guide,有关如何检索位置的信息,请参阅Geocoder API

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多