Android 시스템 언어의 인 스 턴 스 가 져 오기(호 환 7.0)
시스템 의 현재 언어 를 가 져 오 는 것 은 비교적 자주 사용 되 는 기능 입 니 다.안 드 로 이 드 7.0 시스템 에서 구 함수 가 가 져 온 현재 시스템 언어 가 정확 하지 않 거나 안 드 로 이 드 7.0 부터 안 드 로 이 드 시스템 언어의 규칙 이 바 뀌 었 습 니 다.
다음은 Android 7.0 에 적합 하지 않 은 코드 입 니 다.
// Locale
//
Locale locale = getResources().getConfiguration().locale;
//
Locale locale = Locale.getDefault();
//
locale.getLanguage();
getLanguage()만 으로 는 현재 의 시스템 언어 정 보 를 전면적으로 이해 할 수 없습니다.예 를 들 어 간 체 중국어 와 번 체 중국어 의 Language 는 모두 zh 이기 때문에 getCountry()방법 으로 지역 정 보 를 얻 으 면 zh-CN 과 zh-HK/zh-TW 를 얻 을 수 있 습 니 다.요약 하면:
// Locale
//
Locale locale = getResources().getConfiguration().locale;
//
Locale locale = Locale.getDefault();
//
String lang = locale.getLanguage() + "-" + locale.getCountry();
단,Android 7.0 에 서 는 getResources().getConfiguration().locale 이 deprecated 로 표시 되 어 있 기 때문에 초기 적 으로 어 울 리 는 것 은:
// Locale :
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = getResources().getConfiguration().getLocales().get(0);
} else {
locale = getResources().getConfiguration().locale;
}
// :
String lang = locale.getLanguage() + "-" + locale.getCountry();
Android 7.0 부터 사용 하 는 getResources().getConfiguration().getLocales()는 LocaleList 대상 을 되 돌려 줍 니 다.>=1 개의 Locale 을 포함 하고 내용 항목 은 사용자 가 추가 로 삭제 할 수 있 으 며 순 서 는 사용자 가 조정 할 수 있 습 니 다.그러나 이 인터페이스 가 되 돌아 오 는 언어 순서 와 사용자 가 정의 하 는 순서 가 일치 하지 않 습 니 다!테스트 언어 순서
테스트 핵심 코드:
Locale locale = Locale.getDefault();
MLog.e(locale.getLanguage() + "-" + locale.getCountry());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
LocaleList localeList = getResources().getConfiguration().getLocales();
for (int i = 0; i < localeList.size(); i++) {
MLog.e(i + " >1> " + localeList.get(i).getLanguage() + "-" + localeList.get(i).getCountry());
}
LocaleList localeList2 = LocaleList.getAdjustedDefault();
for (int i = 0; i < localeList2.size(); i++) {
MLog.e(i + " >2> " + localeList2.get(i).getLanguage() + "-" + localeList2.get(i).getCountry());
}
LocaleList localeList3 = LocaleList.getDefault();
for (int i = 0; i < localeList3.size(); i++) {
MLog.e(i + " >3> " + localeList3.get(i).getLanguage() + "-" + localeList3.get(i).getCountry());
}
LocaleList localeList4 = LocaleList.getEmptyLocaleList();
for (int i = 0; i < localeList4.size(); i++) {
MLog.e(i + " >4> " + localeList4.get(i).getLanguage() + "-" + localeList4.get(i).getCountry());
}
}
첫 번 째 테스트테스트 폰:Nubia Z9 mini,Android 7.1,Mokee Rom
휴대폰 시스템 언어 순서:hi-IN,zh-CN,en-US,zh-HK
App 국제 화:values,values-zh(values 의 string 은 영어 이 고 values-zh 의 string 은 중국어)
결 과 는:
zh-CN
0 >1> zh-CN
1 >1> hi-IN
2 >1> en-US
3 >1> zh-HK
0 >2> zh-CN
1 >2> hi-IN
2 >2> en-US
3 >2> zh-HK
0 >3> hi-IN
1 >3> zh-CN
2 >3> en-US
3 >3> zh-HK
또한 앱 에 현재 표 시 된 문 자 는 중국어 입 니 다.이차 테스트
테스트 폰:Nubia Z9 mini,Android 7.1,Mokee Rom
휴대폰 시스템 언어 순서:hi-In,en-US,zh-CN,zh-HK
앱 국제 화:가치,가치-zh
결 과 는:
en-US
0 >1> en-US
1 >1> hi-IN
2 >1> zh-CN
3 >1> zh-HK
0 >2> en-US
1 >2> hi-IN
2 >2> zh-CN
3 >2> zh-HK
0 >3> hi-IN
1 >3> en-US
2 >3> zh-CN
3 >3> zh-HK
또한 앱 에 현재 표 시 된 문 자 는 영어 입 니 다.결론.
안 드 로 이 드 7.0 부터 시스템 언어 는 여러 개 를 지원 하고 수 동 으로 정렬 할 수 있 으 며,시스템 은 앱 자체 가 지원 하 는 언어 와 모 바 일 출하 설정 언어 등 요소 에 따라 앱 자체 의 기본 언어 를 조정 한다.
시스템 이 App 으로 조 정 된 기본 언어 를 가 져 오 려 면:
Locale locale = Locale.getDefault();
//Locale.getDefault() LocaleList.getAdjustedDefault().get(0) , ,
String language = locale.getLanguage() + "-" + locale.getCountry();
시스템 의 실제 언어 를 가 져 오 려 면:
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = LocaleList.getDefault().get(0);
} else {
locale = Locale.getDefault();
}
String language = locale.getLanguage() + "-" + locale.getCountry();
이상 의 안 드 로 이 드 가 시스템 언어 를 가 져 온 인 스 턴 스(호 환 7.0)는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.