2016-08-04 48 views
0

我正在为我的公司开发此Android应用程序(假设主要域名为mycompany.com),我需要使用设备所在国家/地区的特定顶级域名(TLD)打开公司网站。所以,基于区域的国家代码对我来说并不合适。如何根据设备所在国家/地区打开域名?

我的意思是,如果您目前在国外在西班牙并且您打开我们的应用程序,则应该打开mycompany.es,如果您在意大利它应该打开mycompany.it等等。我不需要为每个可能的国家都提供这个服务,只需要几个国家,如果当前的国家/地区代码与任何特定的国家/地区代码都不匹配,则后退将为mycompany.com

我真的需要这个之前做我的应用程序的任何其他事情,这将是一个WebView打开公司的网络应用程序。换句话说,在获取设备所在的国家/地区代码之前,该应用程序无法使用。这是因为一些国家(如西班牙)迫使我们只有mycompany.esmycompany.com在ISP级完全被阻止。

我需要此功能可以跨所有设备,手机/平板电脑,所有移动网络或仅使用Wi-Fi。像TelephonyManager.getNetworkCountryIso()的东西可能没有帮助。

我需要通过LocationManager或Google的位置服务API获取位置信息。与他们中的任何一个我需要得到最后一个知道的位置,但如果由于某种原因我没有得到一个,我需要请求位置更新并等待它。有了Google的服务,用户可能会禁用定位服务,这也是一个问题。我不得不倒退到LocationManager,这似乎并不可靠。

所有这些解决方案似乎很麻烦,只是为了将设备的当前国家/地区代码加载到正确的域中的WebView URL。但我想我没有其他选择。

除非有人知道这个问题的更好的解决方案......想法?

回答

2

我最初的想法只是因为我在西班牙并不意味着我突然知道如何说西班牙语。我仍然希望看到与我的手机区域相关的网站。但是,考虑到你的声明,即ISP在ISP级别被阻止,看起来你没有选择。希望当你打开网站时,你可以告诉它设备的语言环境,所以如果我是en_us,默认情况下我会用英文获得.es网站。

鉴于您已经布置的要求,我认为您只需要获取位置,等待它,然后对受支持的网站语言环境执行位置映射。如果这样做,我非常推荐位置服务API通过位置管理器。它的可靠性和速度更快,因为它可以缓存任何已经获取它的应用程序的位置,并自动为您处理后备事件。

+0

你是什么意思,位置服务为我处理fallback? –

+1

这个主题总结得很好http://stackoverflow.com/questions/33022662/android-locationmanager-vs-google-play-services –

+0

我在发布这个问题之前遇到过这篇文章,我没有注意到任何关于倒退。但是当我回家时我会仔细看看。谢谢。 –

相关问题