1

I am aware of this question asked before about the WebView being broken in Android N especially with localization. I have another problem which I cannot figure out how to fix.

As shown in this pic, I have two languages set on my Pixel device running 7.1.1. Now, I'm trying to load the following url in a WebView in my app.

"https://accounts.google.com/ServiceLogin?<my-params>"

What I notice is that the page loads in Chinese instead of English which is my current Locale language. I tried opening the above link on my Chrome desktop (where I am signed in with the same account as my phone) and it loads in Chinese too! I went to Chrome's settings to find that they language preferences are saved to my account because they show up in Chrome too.

I did try setting locale before setContentView() in my app like this:

public static void setLocale(Locale locale){
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.setLocale(locale);
    Context context = MyApplication.getInstance();
    context.getResources().updateConfiguration(config,
            context.getResources().getDisplayMetrics());
}

but in vain. If I put a log statement, it prints the correct Locale which is en-US. The WebView still loads the page in Chinese though. Any thoughts on how can I fix it?

Community
  • 1
  • 1
gsb
  • 5,520
  • 8
  • 49
  • 76

1 Answers1

0

The issue is affected by the webview in the Android N.

  • On the first launching of the webview, it resets the locale to default.
  • If you then rotate the phone - the locale gets correctly set back to the custom locale.
  • If you then launch the webview again - the locale stays correct.

To fix this, you have to switch back to your chosen language after the page was loaded.

You may also check on the Activity/Fragment life cycle when to switch language.

Sources:

https://issuetracker.google.com/issues/37113860 https://gist.github.com/amake/0ac7724681ac1c178c6f95a5b09f03ce#new-locales-vs-old-locales-chinese Activity is blinking after locale change in Android 4.1+

Abdulmoiz Esmail
  • 425
  • 4
  • 15