私の会社用にこの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をロードするだけで、デバイスの現行の国コードを取得するのは面倒です。しかし、私は他の選択肢がないと思う。
誰かがこの問題のより良い解決策を知っていない限り...考えますか?
ロケーションサービスが私のフォールバックを処理するということはどういう意味ですか? –
このトピックでは、かなりうまくまとめています。http://stackoverflow.com/questions/33022662/android-locationmanager-vs-google-play-services –
この質問を投稿する前に、私はそのポストを見つけました。後退する。しかし、私が家に帰ると、私はもっと詳しく見ていきます。ありがとう。 –