有些安卓系统原生的输入法并不满足客户需要,但是手动安装又比较繁琐(一般是多台机器),这时候就需要在原生安卓系统里预装并设置好默认输入法,以下是实现步骤。
首先,把要默认为对应输入法的安卓包在网上下载下来,预装进系统源码中。
先说一个最简单的预装APK的方式。
在 package/apps/ 下面以需要预置的apk名字新建文件夹,如果是安卓8.1,路径为vendor\mediatek\proprietary\packages\apps
以预置 sogou为例。
将 sogou.apk 放到 package/apps/sogou中。
在 package/apps/sogou下面创建文件 Android.mk,文件内容如下
在 build/make/target/product/core.mk或device/mediatek/common/device.mk中添加
PRODUCT_PACKAGES += sogou
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := sogou
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
若需要apk作为32bit的apk运行,则需要在Android.mk中定义
LOCAL_MULTILIB :=32
如需指定apk预置路径,需在Android.mk中定义LOCAL_MODULE_PATH :=xxxxx
实现apk可卸载在
vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_system_list.txt中添加sogou包名
最后重新build整个工程。
1)如果系统是安卓5.1,输入法为搜狗输入法(如果换成其他的输入法,替换红色代码部分即可)
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+
+
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
在loadSecureSettings()方法中加入
+loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
R.string.def_input_method);
+loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
R.string.def_enabled_input_methods);
2)如果系统是安卓8.1,输入法为搜狗输入法(如果换成其他的输入法,替换红色代码部分即可),跟安卓5.1不同的是,路径不一样,实现方法相同
vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
3)以下是经常用到的输入法包名,可供参考
百度:com.baidu.input/.ImeService
讯飞:com.iflytek.inputmethod/.FlyIME
腾讯:com.tencent.qqpinyin/.QQPYInputMethodService
谷歌:com.google.android.inputmethod.pinyin/.PinyinIME
搜狗:com.sohu.inputmethod.sogou/.SogouIME
触宝:com.cootek.smartinput5/.TouchPalIME
默认输入法就是这两步,是不是超级简单hhhh~