一、默认语言
方法一
路径 \device\公司名字\项目名字\full_项目名字.mk
公司名字 看你的平台 mtk、rk
项目名字 看你的out/target/product/ 文件夹名称
PRODUCT_LOCALES := en_US zh_CN zh_TW es_ES pt_BR ru_RU fr_FR de_DE tr_TR vi_VN ms_MY in_ID th_TH it_IT ar_EG hi_IN bn_IN ur_PK fa_IR pt_PT nl_NL el_GR hu_HU tl_PH ro_RO cs_CZ ko_KR km_KH iw_IL my_MM pl_PL es_US bg_BG hr_HR lv_LV lt_L
将你要设置的默认语言移到第一位,一般大多是 zh_CN
方法二
路径 \build\tools\buildinfo.sh
找到变量 ro.product.locale 将其修改为你要默认的语言
if [ -n "$PRODUCT_DEFAULT_LOCALE" ] ; then echo "ro.product.locale=$PRODUCT_DEFAULT_LOCALE" fi
这是系统原来的写法,就是读取默认的语言,直接将其注释进行赋值
echo "ro.product.locale="zh-CN""
注意中间是中横线,不是下划线,不然不生效的
方法三
此种方法我并未进行验证
路径 \build\target\product\full_base.mk
# Put en_US first in the list, so make it default. PRODUCT_LOCALES := en_US
看注释就知道是将第一位的语言设置为默认语言
相对应的语言列表文件为
\build\target\product\locales_full.mk
\build\target\product\languages_full.mk
若你烧录的是工程版本,可通过 修改 build.prop 文件,重启查看效果
adb pull /system/build.prop
修改 ro.product.locale=zh-CN
adb push
adb shell chmod 0755 /system/build.prop
adb shell setprop ro.product.locale “zh-CN”
adb reboot
查看设置的语言值 adb shell getprop ro.product.locale
二、默认输入法
修改如下两个位置
vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
<!--输入法的列表--> <string name="enabled_input_methods" translatable="false">com.android.inputmethod.latin/.LatinIME:com.bingime.ime/.BingIme</string> <!--默认输入法--> <string name="config_default_input_method" translatable="false">com.bingime.ime/.BingIme</string>
ps:com.bingime.ime/.BingIme 这个串取决于你用的输入法,我这里是必应输入法,你可以通过反编译输入法apk,从 AndroidManifest.xml 中获取这个串,对应 service 的类名
<service android:name="com.bingime.ime.BingIme" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod"/> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method"/> </service>
vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
private void loadSecureSettings(SQLiteDatabase db) { SQLiteStatement stmt = null; try { stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);"); .... loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods); loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.config_default_input_method); } finally { if (stmt != null) stmt.close(); } }