11package com .hjq .language .demo ;
22
33import android .annotation .TargetApi ;
4+ import android .content .Context ;
45import android .content .Intent ;
56import android .net .Uri ;
67import android .os .Build ;
@@ -30,6 +31,7 @@ public final class MainActivity extends BaseActivity
3031 implements RadioGroup .OnCheckedChangeListener , OnTitleBarListener {
3132
3233 private WebView mWebView ;
34+ private TextView mSystemLanguageView ;
3335
3436 @ Override
3537 protected void onCreate (Bundle savedInstanceState ) {
@@ -45,18 +47,19 @@ protected void onCreate(Bundle savedInstanceState) {
4547
4648 mWebView .setWebViewClient (new LanguagesViewClient ());
4749 mWebView .setWebChromeClient (new WebChromeClient ());
48- mWebView .loadUrl ("https://developer.android.google.cn/kotlin" , generateLanguageRequestHeader ());
50+ mWebView .loadUrl ("https://developer.android.google.cn/kotlin" , generateLanguageRequestHeader (this ));
4951
5052 //((TextView) findViewById(R.id.tv_language_activity)).setText(this.getResources().getString(R.string.current_language));
5153 ((TextView ) findViewById (R .id .tv_main_language_application )).setText (
5254 getApplication ().getResources ().getString (R .string .current_language ));
53- ((TextView ) findViewById (R .id .tv_main_language_system )).setText (
54- MultiLanguages .getLanguageString (this , MultiLanguages .getSystemLanguage (this ), R .string .current_language ));
55+ mSystemLanguageView = findViewById (R .id .tv_main_language_system );
56+ mSystemLanguageView .setText (MultiLanguages .getLanguageString (this ,
57+ MultiLanguages .getSystemLanguage (this ), R .string .current_language ));
5558
5659 if (MultiLanguages .isSystemLanguage (this )) {
5760 radioGroup .check (R .id .rb_main_language_auto );
5861 } else {
59- Locale locale = MultiLanguages .getAppLanguage ();
62+ Locale locale = MultiLanguages .getAppLanguage (this );
6063 if (LocaleContract .getSimplifiedChineseLocale ().equals (locale )) {
6164 radioGroup .check (R .id .rb_main_language_cn );
6265 } else if (LocaleContract .getTraditionalChineseLocale ().equals (locale )) {
@@ -114,6 +117,12 @@ public void onResume() {
114117 super .onResume ();
115118 mWebView .onResume ();
116119 mWebView .resumeTimers ();
120+
121+ if (mSystemLanguageView == null ) {
122+ return ;
123+ }
124+ mSystemLanguageView .setText (MultiLanguages .getLanguageString (this ,
125+ MultiLanguages .getSystemLanguage (this ), R .string .current_language ));
117126 }
118127
119128 @ Override
@@ -143,7 +152,7 @@ protected void onDestroy() {
143152 @ Override
144153 public void onTitleClick (TitleBar titleBar ) {
145154 Intent intent = new Intent (Intent .ACTION_VIEW );
146- intent .setData (Uri .parse ("https://github.com/getActivity/MultiLanguages" ));
155+ intent .setData (Uri .parse (titleBar . getTitle (). toString () ));
147156 startActivity (intent );
148157 }
149158
@@ -165,7 +174,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
165174 // 如果这是跳链接操作
166175 case "http" :
167176 case "https" :
168- view .loadUrl (url , generateLanguageRequestHeader ());
177+ view .loadUrl (url , generateLanguageRequestHeader (view . getContext () ));
169178 break ;
170179 default :
171180 break ;
@@ -178,11 +187,11 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
178187 * 给 WebView 请求头添加语种环境
179188 */
180189 @ NonNull
181- public static Map <String , String > generateLanguageRequestHeader () {
190+ public static Map <String , String > generateLanguageRequestHeader (Context context ) {
182191 Map <String , String > map = new HashMap <>(1 );
183192 // Android 13 上面语种失效的问题解决方案
184193 // https://developer.android.google.cn/about/versions/13/features/app-languages?hl=zh-cn#consider-header
185- map .put ("Accept-Language" , String .valueOf (MultiLanguages .getAppLanguage ()));
194+ map .put ("Accept-Language" , String .valueOf (MultiLanguages .getAppLanguage (context )));
186195 return map ;
187196 }
188197}
0 commit comments