2016-02-23 7 views
7

Androidデバイスからシステムインストールのロケールを取得する方法はありますを取得します。私はアンドロイドGet Available localesからgetAvailableLocales()てみましたが、それはAsusの、カーボン、溶岩、インテックスなどのデバイスのために働いていません。私はネクサスデバイスでgetAvailableLocales()を呼び出す場合Androidのは、どのようにシステムのインストールのロケール

例えば、私はSettings-> Language&Input -> Language

にあります。しかし、私はいずれかの炭素デバイス上の同じやるならば、代わりにSettings-> Language&Input -> Languageから言語を取得する、私は別の取得ロケールを取得することができていますリスト。

は、私は、デバイス内の言語のみインストールリスト、いないOSでサポートされているすべての言語をしたいです。

+1

でより多くのことを説明しましたか?空の配列、つまり_only_'Recale.US'の配列を返すだけですか?それはクラッシュしますか、使用できるロケールは返されませんか? –

+0

私の質問が更新されました。 –

+0

を確認してください。よろしいですか?ロケールが必要なのはなぜですか?ユーザが選択したロケール(つまり、デフォルトのロケール)を使用して、ネットワークやその他のロケールを使って表示する必要があります。(Locale)文書(https://developer.android.com/reference/java/util/Locale.html)に記載されています。私はあなたが経験しているようなもの(ロケール!=インストールされている言語)を思い出していますが、何が起こっているのか分かりません。 –

答えて

3

あなたは、システムサポートされているロケールをしたいあなたは、システムがサポートされており、デバイスが有効なロケール

Resources.getSystem().getAssets().getLocales() 

最初のものを使用することにより必要な場合

Locale.getAvailableLocales() 

を使用する場合は、すべてのロケールがサポートされている場合について、あなたは確認することはできませんそのデバイスによって。彼らはすべてそのAndroid ROMで入ってきたからです。

しかし、後者は常に確かショットです。 特定のデバイスにインストールされているすべてのロケール(フォント)のみを提供するためです。これらのロケール(フォント)は、そのデバイス製造元によって配置されます。

私はあなたがそれらのデバイスのために、「動作しない」で何を意味するかに展開することができhere

5

Locale.getAvailableLocales()方法は、ロケールの設定ジェネリック「ベース」です。ドキュメントから:

ほとんどのロケールに依存するクラスは、は、この汎用方法好まれるべきで、自分のgetAvailableLocales方法を提供します。

強調鉱山。

あなたは適切なクラスにgetAvailableLocales()メソッドを照会することによって、特定のユースケースのためのロケールが使用可能に得ることができます。具体的には:

+0

私の質問が更新されました。確認してください –

関連する問題