2016-08-04 14 views
0

私の会社用にこのAndroidアプリを開発しています(メインドメインはmycompany.comとしましょう)、現在の国の特定のTLDで会社のウェブサイトを開く必要があります。だから、ロケールベースの国コードは私には良いことではありません。デバイスが現在の国に基づいてドメインを開くにはどうすればよいですか?

私はあなたがイタリアにいる場合は、mycompany.itなどを開く必要があります、あなたは現在、海外では、私たちのアプリを開いて、それはmycompany.esを開く必要があります。現在の国コードが特定の国コードと一致しない場合は、可能なすべての国でこれを必要としませんが、ほんのわずかですが、代替はmycompany.comになります。

私のアプリで何か他のことをする前にこれが本当に必要なのですが、これは会社のウェブアプリを開くWebViewになります。言い換えれば、デバイスが入っている国番号を取得するまで、このアプリケーションは使用できません。これは、スペインなど一部の国ではmycompany.esのみを強制的に送信し、mycompany.comはISPレベルで完全にブロックされているためです。

すべての端末、携帯電話/タブレット、すべてのモバイルネットワーク、またはWi-Fiだけで動作する必要があります。 TelephonyManager.getNetworkCountryIso()のようなものはおそらく助けにはならない。

LocationManagerまたはGoogleのロケーションサービスAPIのいずれかを使用して場所を取得する必要があります。いずれにしても私は最後に知っている場所を知る必要がありますが、何らかの理由で私が手元にない場合は、場所の更新を要求してそれを待つ必要があります。 Googleのサービスには、ユーザーが位置情報サービスを無効にする可能性があるという警告もありますが、これは問題です。私は信頼できるとは思われないLocationManagerにフォールバックする必要があります。

すべてのこれらのソリューションは、正しいドメインにWebView URLをロードするだけで、デバイスの現行の国コードを取得するのは面倒です。しかし、私は他の選択肢がないと思う。

誰かがこの問題のより良い解決策を知っていない限り...考えますか?

答えて

2

私の最初の考えは、私がスペインにいるからといって、私が突然スペイン語を話す方法を知っているわけではありません。私はまだ携帯電話のロケールに関連するウェブサイトを見たいと思う。しかし、.comがISPレベルでブロックされているというあなたの声明があれば、選択肢がないように見えます。うまくいけば、ウェブサイトを開くときにデバイスのロケールを伝えることができるので、もし私がen_usなら、デフォルトで.esウェブサイトを英語で入手します。

あなたがレイアウトした要件を前提とすると、ロケーションを取得し、それを待ってから、サポートされているWebサイトのロケールにロケーションマッピングを行うだけでよいと思います。もしそうなら、位置情報サービスAPIをロケーションマネージャよりも非常にお勧めします。それはすでにそれを取得し、あなたのためのフォールバックを自動的に処理するすべてのアプリケーションの場所をキャッシュするので、はるかに信頼性が高く高速です。

+0

ロケーションサービスが私のフォールバックを処理するということはどういう意味ですか? –

+1

このトピックでは、かなりうまくまとめています。http://stackoverflow.com/questions/33022662/android-locationmanager-vs-google-play-services –

+0

この質問を投稿する前に、私はそのポストを見つけました。後退する。しかし、私が家に帰ると、私はもっと詳しく見ていきます。ありがとう。 –

関連する問題