广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现系统语言切换功能
  • 785
分享到

Android实现系统语言切换功能

系统Android 2022-06-06 08:06:53 785人浏览 薄情痞子
摘要

简单介绍下这个需求的缘由,这段时间因公司业务需要,其中有一项“设置系统语言”功能,就是在使用APP的过程中,动态的去切换整个Android机器的语言,具体参照手机设置页面有语言

简单介绍下这个需求的缘由,这段时间因公司业务需要,其中有一项“设置系统语言”功能,就是在使用APP的过程中,动态的去切换整个Android机器的语言,具体参照手机设置页面有语言切换功能。起初想来是很简单的事情嘛,不就是个简单的资源国际化嘛,strings.xml资源文件一整还不给OK?真正动起手来就真不是这么一回事了,国际化是没问题,但是怎样能更改所有页面的文字资源呢,这是一个问题。下面介绍下网上找的几个方案。

一、API欺骗

烧制到手机中的android.jar包含了Android所需的各种类与方法;而供开发者使用的android.jar只是其中的一部分。api欺骗是指在应用中去模拟未公开的类和方法让应用编译通过并生成APK,然而在应用实际运行中调用的却仍是烧制到手机中真实的android.jar。

二、使用Java反射机制

IActivityManager与ActivityManagerNative都是非公开类,使用Java反射去调用其中的方法。
但是这个弊端是显而易见的,上述两种方法都是去更改系统的语言的类型,功能和你去设置页面去设置语言类型的效果一样。发现对当前系统设置了新的Locale后,不单自己的应用语系改变了,系统所有的应用语系都改变了,这正是我们所需要的。

核心代码如下:



@SuppressWarnings("unchecked")
public class LanguageUtils {
  public static void updateLanguage(Locale locale) {
    try {
      Object objIActMag, objActMagNative;
      Class clzIActMag = Class.forName("android.app.IActivityManager");
      Class clzActMagNative = Class
          .forName("android.app.ActivityManagerNative");
      //amn = ActivityManagerNative.getDefault(); 
      Method mtdActMagNative$getDefault = clzActMagNative
          .getDeclaredMethod("getDefault");
      objIActMag = mtdActMagNative$getDefault.invoke(clzActMagNative);
       // objIActMag = amn.getConfiguration(); 
      Method mtdIActMag$getConfiguration = clzIActMag
          .getDeclaredMethod("getConfiguration");
      Configuration config = (Configuration) mtdIActMag$getConfiguration
          .invoke(objIActMag);
      // set the locale to the new value 
      config.locale = locale;
      //持久化  config.userSetLocale = true; 
      Class clzConfig = Class
          .forName("android.content.res.Configuration");
      java.lang.reflect.Field userSetLocale = clzConfig
          .getField("userSetLocale");
      userSetLocale.set(config, true);
      // 此处需要声明权限:android.permission.CHANGE_CONFIGURATION
      // 会重新调用 onCreate();
      Class[] clzParams = { Configuration.class };
      // objIActMag.updateConfiguration(config);
      Method mtdIActMag$updateConfiguration = clzIActMag
          .getDeclaredMethod("updateConfiguration", clzParams);
      mtdIActMag$updateConfiguration.invoke(objIActMag, config);
      BackupManager.dataChanged("com.android.providers.settings");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

这样我们利用JAVA的反射机制,调用那些隐藏的方法就可以实现了。

需要注意的是调用此方法:


// objIActMag.updateConfiguration(config);
mtdIActMag$updateConfiguration.invoke(objIActMag, config);

需要加上权限:


android.permission.CHANGE_CONFIGURATION

并且此处会重新调用onCreate方法,我就在这个地方处被坑了一把。(如果调用此方法的时候做了一些逻辑,就注意下)。

最后声明:

既然是更改系统的配置当然你的签名也应该是系统签名和sharedUserId。不然会类似以下的错误!

error:

java.lang.SecurityException: Permission Denial: updateConfiguration() from pid=31594, uid=10099 requires android.permission.CHANGE_CONFIGURATION

各位都注意下吧~

您可能感兴趣的文章:Android 系统语言切换监听和设置实例代码Android实现应用内置语言切换功能Android实现app应用多语言切换功能Android app应用多语言切换功能实现Android 7.0以上版本实现应用内语言切换的方法


--结束END--

本文标题: Android实现系统语言切换功能

本文链接: https://www.lsjlt.com/news/25438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现系统语言切换功能
    简单介绍下这个需求的缘由,这段时间因公司业务需要,其中有一项“设置系统语言”功能,就是在使用APP的过程中,动态的去切换整个Android机器的语言,具体参照手机设置页面有语言...
    99+
    2022-06-06
    系统 Android
  • Android实现app应用多语言切换功能
    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果   和微信类似,在设置界面打开切换语言的界面,选择语言后重...
    99+
    2022-06-06
    多语言 app Android
  • Android app应用多语言切换功能实现
    本文实例为大家分享了Android app应用实现多语言切换功能,供大家参考,具体内容如下 1.添加多语言文件 在不同的 value 文件夹下(例如 value 、value...
    99+
    2022-06-06
    多语言 app Android
  • Android实现应用内置语言切换功能
    一、需求 有时候应用需要在内部切换语言但又不影响系统的语言,比如是应用现在是中文的,系统语言也是中文的,我把应用的切换成英文显示后系统语言还是中文的,系统语言切换后也不会被改...
    99+
    2022-06-06
    Android
  • Android应用中怎么实现一个切换内置语言功能
    这篇文章给大家介绍Android应用中怎么实现一个切换内置语言功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、需求有时候应用需要在内部切换语言但又不影响系统的语言,比如是应用现在是中文的,系统语言也是中文的,我把...
    99+
    2023-05-31
    android roi
  • Android开发中怎么在App中实现一个内语言切换功能
    这期内容当中小编将会给大家带来有关Android开发中怎么在App中实现一个内语言切换功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码实现:布局文件(Data-Binding模式),很简单就是两行文...
    99+
    2023-05-31
    app android pp
  • Android如何实现中英文语言切换
    这篇文章主要介绍Android如何实现中英文语言切换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码@Override    protected void ...
    99+
    2023-06-22
  • 实现微信小程序中的多语言切换功能
    随着全球化的发展,各行各业都在越来越多地使用多种语言进行交流和沟通。而在开发微信小程序时,为了让更多的用户能够方便地使用小程序,多语言切换功能的实现就变得非常重要了。在本文中,我们将介绍如何在微信小程序中实现多语言切换功能,并提供具体的代码...
    99+
    2023-11-21
    微信小程序 多语言 切换
  • Android使用ViewFlipper实现图片切换功能
    今天给大家简单的讲一下Android手势,目前市场上的App中手势的运用比较少。 Android提供了两种手势: ①.Android提供了手势检测,并为手势检测提供了相应的监听器 ②.Android允许开发者添加手势,并提供了相应的API识...
    99+
    2023-05-30
    android viewflipper 图片切换
  • Android如何实现Tab切换界面功能
    这篇文章主要介绍“Android如何实现Tab切换界面功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android如何实现Tab切换界面功能”文章能帮助大家解决问题。一、实验目的 掌握各种高级U...
    99+
    2023-06-30
  • Android基于ImageSwitcher实现图片切换功能
    左右切换图片控件大家都用ViewPager, ViewFipper比较多吧,我之前也用ViewPager实现了,使用ViewPager实现左右循环滑动图片,有兴趣的可以去看下,...
    99+
    2022-06-06
    图片 Android
  • Android实现Tab切换界面功能详解
    目录一、实验目的二、实验任务三、实验内容与要求四、实现效果五、代码实现 六、实验总结一、实验目的 1. 掌握各种高级UI控件的基本使用; 2. 能够实现Tab切换效果。 二...
    99+
    2022-11-13
  • Android-实现切换Fragment页功能的实现代码
    场景:使用Fragment实现切页。 类结构: 一:Activity Activity中使用getSupportFragmentManager().beginTrans...
    99+
    2022-06-06
    fragment Android
  • Android实现夜间模式切换功能实现代码
    现在很多App都有夜间模式,特别是阅读类的App,夜间模式现在已经是阅读类App的标配了,事实上,日间模式与夜间模式就是给App定义并应用两套不同颜色的主题,用户可以自动或者手...
    99+
    2022-06-06
    Android
  • Android实现界面左右滑动切换功能
    相信大家一定都使用过手机QQ和微信之类的软件,当我们使用时不难发现其界面的切换不仅可以通过点击页标签来实现,还可以通过左右滑动来实现的,耗子君刚开始学Android时就觉得这样...
    99+
    2022-06-06
    界面 Android
  • Android控件ImageSwitcher实现左右图片切换功能
    ImageSwitcher类是ViewSwitcher类的子类,它实现的效果是在完成ImageView的切换并且带有动画效果。要使用这个类需要以下两个步骤: 1)为ImageS...
    99+
    2022-06-06
    图片 Android
  • Vue.js实现图片切换功能
    本文实例为大家分享了Vue.js实现图片切换功能的具体代码,供大家参考,具体内容如下 实现功能如下 文件目录如下,要实现本功能只需要修改图片的存储位置即可 代码如下 <...
    99+
    2022-11-12
  • vue与vue-i18n如何实现后台数据的多语言切换功能
    小编给大家分享一下vue与vue-i18n如何实现后台数据的多语言切换功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在XXX...
    99+
    2022-10-19
  • css如何实现3D切换功能
    这篇文章主要介绍css如何实现3D切换功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   <!DOCTYPEhtml>   <html>   <...
    99+
    2022-10-19
  • 【android studio 简单配置多语言国际化app 一行代码实现切换语言】
    文章目录 前言一、语言文件二、一行代码切换语言1.切换语言2.保存语言状态3.界面闪动解决之返回主界面 总结 前言 新版本的android studio配置多语言其实很简单,不过目前网上找到的几个博客都搞得很复杂,可能是版...
    99+
    2023-08-16
    android studio android ide 自动翻译
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作