2016-08-04 49 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

我在發佈這個問題之前遇到過這篇文章,我沒有注意到任何關於倒退。但是當我回家時我會仔細看看。謝謝。 –

相關問題