3 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您想獲得設(shè)備的選定語(yǔ)言,這可能對(duì)您有所幫助:
Locale.getDefault().getDisplayLanguage();

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
我在Android 4.1.2設(shè)備上檢查了Locale方法,結(jié)果如下:
Locale.getDefault().getLanguage() ---> en
Locale.getDefault().getISO3Language() ---> eng
Locale.getDefault().getCountry() ---> US
Locale.getDefault().getISO3Country() ---> USA
Locale.getDefault().getDisplayCountry() ---> United States
Locale.getDefault().getDisplayName() ---> English (United States)
Locale.getDefault().toString() ---> en_US
Locale.getDefault().getDisplayLanguage()---> English

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
對(duì)我有用的是:
Resources.getSystem().getConfiguration().locale;
Resource.getSystem()返回一個(gè)全局共享的Resources對(duì)象,該對(duì)象僅提供對(duì)系統(tǒng)資源的訪問(沒有應(yīng)用程序資源),并且沒有為當(dāng)前屏幕配置(不能使用維度單位,不會(huì)根據(jù)方向更改等)。
由于getConfiguration.locale現(xiàn)已棄用,因此在Android Nougat中獲取主要語(yǔ)言環(huán)境的首選方法是:
Resources.getSystem().getConfiguration().getLocales().get(0);
為了保證與以前的Android版本的兼容性,可能的解決方案是一個(gè)簡(jiǎn)單的檢查:
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
//noinspection deprecation
locale = Resources.getSystem().getConfiguration().locale;
}
更新
從支持庫(kù)開始,26.1.0您不需要檢查Android版本,因?yàn)樗峁┝讼蚝蠹嫒莸姆奖惴椒╣etLocales()。
只需致電:
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
- 3 回答
- 0 關(guān)注
- 770 瀏覽
添加回答
舉報(bào)