0

我正在构建一个需要用户所在国家/地区的应用程序。如果用户使用带有

telephonyManager.getNetworkCountryIso()

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

任何帮助将不胜感激

谢谢

4

3 回答 3

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

希望能帮助到你!

于 2013-07-22T09:20:29.973 回答
0

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

实际上,您的问题与类似。

但在 Android 中,您现在获得了内置的 Geocoder,因此无需专门调用 Web 服务并解码 json。请参阅位置指南了解如何获取用户位置和地理编码器API了解如何检索位置。

于 2013-07-22T09:40:06.527 回答
0

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

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

这样,您将涵盖尽可能多的场景。

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

于 2013-07-22T09:48:07.173 回答