Android 5.1.1 修改整个系统语言

        现在接到一个需求:基于Android 5.1.1 ,做一个应用,可以修改系统语言 :)

        首先明确这个任务:我们作为系统提供方,需要给别人编译提供刷机使用的 rom ,与此同时,我们在 rom 中需要提供功能:别人可以调用 rom 的一个接口(或者方法),可以实现修改系统语言的效果(相当于点击了系统 Settings 中的语言进行更换一样,并且保证系统重启之后系统的语言不会变为修改之前的语言)。  

        查找资料,发现当前设置 Android 语言这个功能,无非就两个:设置本应用中的语言;设置修改整个系统的语言。

        但是,  查遍了网上所有设置系统语言的教程, 无非都是照着一个博客来回抄 ... 没有哪一个方案真的管用。不过功夫不负有心人,在一个前辈的博客的引导下,结合我们当前修改系统语言的实际需求,最终完成了这个需求。

        先说一下大概思路:做一个系统 Service 的应用,并且在应用功能清单列表中设置 android:sharedUserId="android.uid.system",把应用预置到系统中去,当系统启动起来之后,这个应用被启动。在应用中接收特定的广播,当收到某一约定好的广播,预置应用会获取广播中携带的参数,然后根据参数去设置当前系统语言为参数对应的语言(经过验证,这种方式可以修改系统语言,并且修改成功之后,即使重启,重启之后语言也不会再恢复为修改之前的语言)。

        其实写到这里,整个过程就说出来了,没什么其他的东西,接下来,我会把我自己做的 Demo贴上来,需要注意的是,这个demo 是需要预置到系统中去才可以达到修改系统语言的功能。至于怎么预置到系统中去,我理解的其实有三种方式:

        (1)把应用整个源码放到packages/apps/目录下去编译(注意 .mk 文件的编写)。

        (2)把应用编译出 apk 文件出来,然后把apk 文件预置到packages/apps/目录下去编译(注意 .mk 文件的编写)。

        (3)在AS 中编译:记得在功能清单列表中设置 android:sharedUserId="android.uid.system",还需要记得把编译出来的apk重新进行系统签名,做完这两个事儿,就可以直接使用命令行安装应用了。

 

          我的 Demo : https://github.com/1136066873/LanguageSettingDemo

          参考:

          https://blog.csdn.net/lbcab/article/details/51679845

          https://blog.csdn.net/LoongEmbedded/article/details/54966309

          https://blog.csdn.net/wh_19910525/article/details/39548757

          https://blog.csdn.net/myth13141314/article/details/62037194

          另外,修改应用内的语言参考:

          https://www.jianshu.com/p/cfb8ca877d94

          https://blog.csdn.net/lalate/article/details/72579415

          https://www.cnblogs.com/senior-engineer/p/4991433.html

 

 

 

 

 

        

你可能感兴趣的:(Android 5.1.1 修改整个系统语言)