国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 系統 > Android > 正文

Android實現系統語言切換功能

2020-01-02 07:01:59
字體:
來源:轉載
供稿:網友

簡單介紹下這個需求的緣由,這段時間因公司業務需要,其中有一項“設置系統語言”功能,就是在使用APP的過程中,動態的去切換整個Android機器的語言,具體參照手機設置頁面有語言切換功能。起初想來是很簡單的事情嘛,不就是個簡單的資源國際化嘛,strings.xml資源文件一整還不給OK?真正動起手來就真不是這么一回事了,國際化是沒問題,但是怎樣能更改所有頁面的文字資源呢,這是一個問題。下面介紹下網上找的幾個方案。

一、API欺騙

燒制到手機中的android.jar包含了Android所需的各種類與方法;而供開發者使用的android.jar只是其中的一部分。API欺騙是指在應用中去模擬未公開的類和方法讓應用編譯通過并生成APK,然而在應用實際運行中調用的卻仍是燒制到手機中真實的android.jar。

二、使用Java反射機制

IActivityManager與ActivityManagerNative都是非公開類,使用Java反射去調用其中的方法。
但是這個弊端是顯而易見的,上述兩種方法都是去更改系統的語言的類型,功能和你去設置頁面去設置語言類型的效果一樣。發現對當前系統設置了新的Locale后,不單自己的應用語系改變了,系統所有的應用語系都改變了,這正是我們所需要的。

核心代碼如下:

/** * TODO<更新系統語言> *  * @author Xiho * @versionCode 1 <每次修改提交前+1> */@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

各位都注意下吧~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
www.狠狠| 国产一卡2卡3卡免费网站| 国产一二三区在线视频| 2018av男人天堂| 国产黄色网页| 国产亚洲精品久久久网站好莱| 国产乱精品一区二区三区| 中文字幕在线永久在线视频| 国产午夜电影| 日本一级理论片在线大全| www.91在线播放| 尤物网在线观看| 在线免费看黄网站| 国产美女被遭强高潮免费网站| 国产黄色在线播放| 欧美性猛交xxxx免费看久久| **三级三级97片毛片| av在线第一页| 91中文字幕| 五月天婷婷基地| 精品欧美日韩一区二区| 欧美国产中文| 精品入口蜜桃| 国产精品美女视频免费观看软件| 永久免费不卡在线观看黄网站| 超碰免费在线播放| 依依成人在线| 国产一级影片| 狠狠干在线视频| 午夜在线视频播放| 99久热re在线精彩视频| 天天操天天操一操| 免费观看久久久久| 日本黄在线观看| 亚洲第一成人在线视频| 国产日韩精品在线看| 国产免费a∨片在线观看不卡| 一级二级三级在线观看| 国产黄色免费| 国产黄色在线| 精品欧美色视频网站在线观看| 国产毛片毛片毛片| 成年黄网站在线观看免费| 天堂√中文在线| 夜夜操com| jizz在线视频| 毛片在线视频| √天堂资源地址在线官网| 国产中文字幕在线观看| 国产中文在线视频| 麻豆国产视频| 黄色片大全在线观看| 国产尤物视频| 尤物视频在线观看| 中文字幕第一页av| 国产偷窥洗澡视频| 国产对白国语对白| www.蜜桃av| 午夜不卡视频| 99高清免费国产自产拍| www.中文字幕久久久| 丁香婷婷激情| 精品国产免费观看一区| 男人操女人免费网站| 国产天堂在线观看| √天堂中文在线| 2018狠狠干| 狂野欧美性猛交xxxx乱大交| 中文字幕成人乱码在线电影| 国产福利免费观看| 日韩精品免费一区二区| 最近最好的中文字幕2019免费 | 亚洲欧美综合乱码精品成人网| 天天插天天干| 午夜不卡视频| 亚洲天堂久久久| 国产一级在线观看www色| 91网页在线观看| 福利视频网址导航| 国产精品白浆视频免费观看| 天天干天天操天天爽| 五月婷婷开心综合| 人人九九精品| 在线视频中文字幕久| 国产女人伦码一区二区三区不卡| 91网页在线观看| 午夜国产在线| 免费国产在线视频| 99高清免费国产自产拍| 国产卡二和卡三的视频| 日本欧洲一区| 亚洲第一区视频| 91精品大全| 国产成a人亚洲精v品| 最新中文字幕在线视频| 超碰在线网站| 国产永久av在线| 丁香花在线电影小说观看| 日本欧美在线视频免费观看| 精品乱码一区二区三四区视频| 国产区在线看| 国产三区四区在线观看| 蜜桃视频中文字幕| 青青草免费在线观看| www.狠狠艹| 黄色片免费在线| 国产乱子伦三级在线播放| 国内外激情在线| 国产精品探花在线| 五月天天在线| 国产盗摄一区二区| 99热播在线观看| 日本福利午夜视频在线| 狠狠操五月天| 国产欧美日韩第一页| 精品美女在线观看视频在线观看| 91久久麻豆| 青青草视频在线观看| 国产乱码在线| 亚洲综合在线不卡| 久久久久久久久免费视频| 国产麻豆精品入口在线观看 | 国产美女高潮一区二区三区| 国产麻豆视频免费观看| 国产一级二级在线| 伊人永久在线| 国产在线看片| 中文字幕av高清| 九九热视频免费观看| 国产小视频在线| 97一区二区三区| 国产美女在线看| 亚洲一区免费在线| 国产秀色在线www免费观看| 精品a在线观看| 国产精选在线视频拍拍拍| 伊人伊人av电影| 国产小视频在线高清播放| www亚洲天堂| 国产盗摄精品一区二区酒店| 欧美日韩在线中文字幕| 91最新在线| 国产秀色在线www免费观看| 日本欧洲一区| av高清在线| 国产成人久久精品77777| 成人福利视频导航| 久久久久国产精品嫩草影院| 亚洲综合在线免费| 国产福利在线看| 国产精品你懂的在线观看| 国产主播色在线| 超碰免费在线播放| 国产91久久久久| 国产精品视频一区二区三区麻豆| 导航福利在线| 黄色av网站在线| 国产在线视频网站| 国产专区在线| 豆国产97在线|亚洲| 国产在线观看色| 丁香花高清在线观看完整版 | 国产视频青青| 国产中文字幕在线播放| 日本久久国产| 开心丁香婷婷深爱五月| 超碰国产在线| 国产尤物一区二区三区| 福利资源在线久| 国产调教视频在线观看| 国产精品18久久久久久久久久| 国产一级性片| 中文岛国精品亚洲一区| 亚洲国产精品区| 激情综合网五月激情| 国产精品亚洲色图| 国产精品久久麻豆| 国产寡妇树林野战在线播放| 999国产在线视频| 性色视频在线| 天堂中文资源在线| 国产激情在线视频| 欧美性猛交p30| 国产福利小视频在线| 伊人影院在线视频| 成人欧美日韩| 99久久免费精品国产免费| 免费中文字幕| ·天天天天操| 黄色国产网站在线观看| 国产欧美日韩第一页| h网站免费在线观看| 国产美女在线看| 精品黄色免费中文电影在线播放| 超碰97在线免费观看| 2020亚洲男人天堂| 尤物网站在线| 就爱干草视频| 一二三四区在线观看| 国产黄色网页|