前端实现多语言切换_等红灯时频繁D到N档切换

前端实现多语言切换_等红灯时频繁D到N档切换这两天做了多国家多语言切换的需求,遇到了一个问题。androidN版本之后在进入包含webview页面之后,再次切换语言失效的问题,记录一下。原因是:webview在AndroidN之后,webview的相关类以及相关jar的修改AndroidN之前:Android的WebView是使用webkit构建的。虽然它最初是AOSP的一部分,但是从KitKat开始,决定分离出We

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

这两天做了多国家多语言切换的需求,遇到了一个问题。android N版本之后在进入包含webview 页面之后,再次切换语言失效的问题,记录一下。
原因是:webview 在Android N之后,webview的相关类以及相关jar的修改
Android N 之前:
    Android的WebView是使用webkit构建的。虽然它最初是AOSP的一部分,但是从KitKat开始,决定分离出WebView一个名为Android System WebView的组件。它基本上是一个Android系统应用程序,预装了Android设备。它会像其他系统应用程序(如Google Play服务和Play商店应用程序)一样定期更新。您可以在已安装的系统应用列表中看到它:

这里写图片描述

Android 7.0之后:
    Chrome应用将用于呈现WebView第三方Android应用中的任何/所有内容。在具有Android N开箱即用的手机中,Android WebView系统应用根本不存在。在已收到Android N的OTA更新的设备中,Android系统WebView被禁用:

这里写图片描述

这里写图片描述

 此外,引入了多语言支持,设备具有多种默认语言:

 如果应用中包含WebView,那么使用Chrome应用呈现这些内容。因为Chrome 本身就是一个Android应用程序,运行在自己的沙盒过程中,所以它不会被绑定到您的应用程序设置的区域设置。相反,Chrome将恢复到主设备区域设置。例如,假设您的应用程序语言环境设置为ar-AE,而设备的主要语言环境为en-US。在这种情况下,Activity包含a 的语言环境WebView将从中更改ar-AE为en-US,并且将显示相应语言环境文件夹中的字符串和资源。你可能会看到在那些Activitys上有LTR和RTL字符串/资源的混杂WebView。

 解决方案:

    这个问题的完整解决方案由两个步骤组成:

    步骤1:

    首先,在每一个Activity,或者至少每Activity一个都有一个手动重置默认语言环境WebView。
public static void setLocale() {
        Locale locale = new Locale(APP_LANG, APP_LOCALE);
        Configuration config = AppApplication.getInstance().getBaseContext()
                .getResources().getConfiguration();
        Locale.setDefault(locale);
        config.locale = locale;
        LogUtil.d(TAG, " set locale to :" + locale.toString());
        AppApplication.getInstance()
                .getBaseContext()
                .getResources()
                .updateConfiguration(config, AppApplication.getInstance().getBaseContext().getResources().getDisplayMetrics());
    }
    在所有的Acticity 页面的onCreate()中执行该方法,有基类Activity的,直接放到基类的oncreate()中就可以,一定注意要包含所有的webview页面。该locale参数应该是Locale希望设置的默认值。例如,如果您希望将Arabic / UAE设置为默认语言环境,则应该通过new Locale("ar", "AE")。
    步骤2:
new WebView(this).destroy();
将这行代码添加到Applicaiton的oncreate下,以及用户可能正在改变语言的地方。

参考资料:

https://stackoverflow.com/questions/40398528/android-webview-language-changes-abruptly-on-android-n

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197408.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm鼠标滚动控制字体大小_pycharm窗口放大

    pycharm鼠标滚动控制字体大小_pycharm窗口放大1、放大页面方法第一步:打开file里面的setting,然后打开Keymap,再搜索框中输入increase,点击increaseFontSize,双击AddMouseShortcut(先不用点OK)第二步:点击AddMouseShortcut弹出下面对话框,然后按住ctrl并向上滚动鼠标滑轮,将变成第二个对话框,点击OK;第三步:显示下面页面表示设置放大成功,点击OK即可。2、缩小页面方法与上面方法类似,将increase变成decrease输入即可;…

  • git 删除文件后如何恢复[通俗易懂]

    git 删除文件后如何恢复[通俗易懂]有时候不小心在git中rm了文件。怎么恢复呢?别急,咱们一步步来。首先gitstatus一把,看看此时工作区的状态[xxx@xxxstatic_files]$gitstatus#Onbranchmasternothingtocommit(workingdirectoryclean)可见此时没有任何修改的内容。再看看具体有什么xxx@xxxstatic_files]$

  • linux系统中如何卸载删除软件_卸载预装软件app

    linux系统中如何卸载删除软件_卸载预装软件appLinux下如何卸载软件比如我在Linux下安装了Mysql,但是现在我要卸载重装,提示卸载失败,有其它的服务或软件如php-mysql-5.1.6-3;mysql-server-5.0.22-2.1依赖于Mysql。我可以加–nopeds来卸载Mysql,但是依赖于Mysql的软件或服务是不是也要卸载?我把Mysql卸载了,现在安装了RPM包的mysql-server和Mysql-client…

  • batchnorm pytorch_Pytorch中的BatchNorm

    batchnorm pytorch_Pytorch中的BatchNorm前言:本文主要介绍在pytorch中的BatchNormalization的使用以及在其中容易出现的各种小问题,本来此文应该归属于[1]中的,但是考虑到此文的篇幅可能会比较大,因此独立成篇,希望能够帮助到各位读者。如有谬误,请联系指出,如需转载,请注明出处,谢谢。∇∇\nabla∇联系方式:e-mail:FesianXu@163.comQQ:973926198github:https:/…

  • windows程序设计第五版_程序设计中三种基本结构

    windows程序设计第五版_程序设计中三种基本结构WNDCLASS结构参数及其用法WNDCLASS是一个由系统支持的结构,用来储存某一类窗口的信息,如ClassStyle,消息处理函数,Icon,Cursor,背景Brush等。也就是说,CreateWindow只是将某个WNDCLASS定义的窗体变成实例。结构WNDCLASS包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一,应用程序通过定义一个窗口类确定窗口的属性基…

  • HTML中空格_如何去掉word中的空格

    HTML中空格_如何去掉word中的空格1. 空格符大  家  好!显示效果为:大家好!2.p标签使用空两格百度地图API功能百度地图API功能效果如下:3.span标签空格百度地图API功能百度地图API功能效果如下:4.word-spacing属性,Happynewyear!效果:![在这里插入图片描述](https://img-blog….

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号