我正在开发一个只在某些国家/地区提供某些功能的应用程序。要启用此功能,我需要找到用户的国家/地区。我有什么方法可以做到这一点?如果需要,我可以添加服务器支持。
到目前为止我看过的内容。
1)Ip地理位置 - 在大多数情况下应该可以工作,速度相当快,但不确定准确度如何。我注意到一些应用程序将SG的一些同事列为中国..
2)位置+反向地理编码 - 看起来更可靠,但是请求设备上的位置服务(它是否仅适用于wifi平板电脑)并启用它,并且需要时间a)获取位置b)服务器调用反向地理编码
3)Just discovered TelephonyManager及其调用getNetworkCountryIso
和getSimCountryIso
,不确定这两者是如何不同的......这应该非常快,但仅限于设备用SIM卡。
时区和基于区域设置的解决方案不可行,因为用户可能会更改区域设置(通过更改设备语言),并且多个国家/地区共享时区。
还有其他解决方案吗?如果这些都不是非常令人满意,我们可能会使用多个APK,但想先考虑所有选项
我们需要支持的设备是4.1+ Android手机(很快就是平板电脑),特别是三星。
这个主题有很多相关的帖子,但大多数都关注如何实现其中一个解决方案,而不是比较和对比所有选项。我也看过Android Location Strategies,但这又关注如何获得#2的位置。
编辑:刚遇到LocationProvider.getLastKnownLocation应该很快,而且不准确的可能性对我来说可能不太重要。
Google Play Services也有类似的API。