【问题标题】:WebView language error Android NWebView 语言错误 Android N
【发布时间】:2017-07-15 19:18:16
【问题描述】:

我知道this 之前提出的关于 WebView 在 Android N 中被破坏的问题,尤其是在本地化方面。我还有一个问题,我不知道如何解决。

pic 所示,我在运行 7.1.1 的 Pixel 设备上设置了两种语言。现在,我正在尝试在我的应用程序的 WebView 中加载以下 url。

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

我注意到页面以中文而不是我当前的语言环境加载的英文。我尝试在我的 Chrome 桌面(我使用与手机相同的帐户登录)上打开上述链接,它也以中文加载!我去了 Chrome 的设置,发现它们的语言首选项已保存到我的帐户中,因为它们也显示在 中。

我确实尝试在我的应用程序中 setContentView() 之前设置语言环境,如下所示:

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());
}

但徒劳无功。如果我输入一个日志语句,它会打印出正确的Locale,即en-USWebView 仍然以中文加载页面。关于如何解决它的任何想法?

【问题讨论】:

    标签: android webview android-7.0-nougat


    【解决方案1】:

    该问题受 Android N 中的 webview 影响。

    • 第一次启动 web 视图时,它会将区域设置重置为默认值。
    • 如果您随后旋转手机 - 区域设置会正确设置回自定义区域设置。
    • 如果您随后再次启动 web 视图 - 区域设置保持正确。

    要解决此问题,您必须在页面加载后切换回您选择的语言。

    您还可以检查 Activity/Fragment 生命周期何时切换语言。

    来源:

    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+

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      相关资源
      最近更新 更多