Android 修改系统默认输入法
原文出处:http://www.ccbu.cc/framework/modify-default-inputmethod.html
1. 修改系统默认输入法
Android系统的默认输入法在很多情况下是无法满足我们的需求的,因此就需要OEM自己集成输入法,基础输入法到系统,并需要修改系统默认输入法的配置。
- 在frameworks/base/packages/SettingsProvider/res/values/defaults.xml添加
<string name="def_input_method" translatable="false">com.android.inputmethod.pinyin/.PinyinIME</string>
- frameworks/base/packages/SettingsProvider/src/com/Android/providers/settings/DatabaseHelper.java的loadSecureSettings函数中添加
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.def_input_method);
- 如使用第三方自定义输入法,请将输入法放到system/app目录打包到系统。
附:常见输入法的包名和类名
输入法 | 包名/类名 |
---|---|
百度 | 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 |
2. 使用ADB命令设置默认输入法
显示系统安装的输入法列表
adb shell ime list -s
获取系统默认输入法
adb shell settings get secure default_input_method
设置系统默认输入法
adb shell settings put secure default_input_method com.sohu.inputmethod.sogou/.SogouIME
3. 使用代码设置系统默认输入法
public class InputMethodUtil {/*** get system default input method* @param context* @return*/public static String getDefaultInputMethod(Context context) {return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);}/*** Set system default input method* @param context* @param inputMethod: input method* @return*/public static boolean setDefaultInputMethod(Context context, String inputMethod) {return Settings.Secure.putString(context.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD, inputMethod);}/*** Gets the input method that the system has installed* * @param context* @return installed input method list*/public static String[] getInputMethodIdList(Context context) {InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null && imm.getInputMethodList() != null) {String[] methodIds = new String[imm.getInputMethodList().size()];for (int i = 0; i < imm.getInputMethodList().size(); i++) {methodIds[i] = imm.getInputMethodList().get(i).getId();}return methodIds;}return new String[] {};}/*** update system input method with checking* @param context* @param inputMethod* @return*/public static boolean updateDefaultInputMethod(Context context, String inputMethod) {if (context != null && !TextUtils.isEmpty(inputMethod)) {String current = getDefaultInputMethod(context);if (current != null && !current.equalsIgnoreCase(inputMethod)) {String packageName = inputMethod.substring(0, inputMethod.indexOf('/'));android.content.pm.ApplicationInfo info = null;try {info = context.getPackageManager().getApplicationInfo(packageName, 0);} catch (NameNotFoundException e) {e.printStackTrace();}if (info != null) {return setDefaultInputMethod(context, inputMethod);}}}return false;}
}
4. Android 9.0修改默认输入法
上的修改方式在Android4.4上验证是没有问题的,在Android9.0版本上,还需要增加ENABLED_INPUT_METHODS
的处理。
在frameworks/base/packages/SettingsProvider/res/values/defaults.xml添加:
<string name="def_enabled_input_methods" translatable="false">com.android.inputmethod.pinyin/.PinyinIME</string>
frameworks/base/packages/SettingsProvider/src/com/Android/providers/settings/DatabaseHelper.java的loadSecureSettings函数中添加
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,R.string.def_enabled_input_methods);
使用代码设置时,还需要设置Settings.Secure.DEFAULT_INPUT_METHOD
的值,Settings.Secure.DEFAULT_INPUT_METHOD
的值会包含多个输入法,以:
分割。
Android 修改系统默认输入法相关推荐
- Android修改系统默认输入法
系统默认输入法改为拼音输入法 1.在defaults.xml添加两个string +++ b/release/frameworks/base/packages/SettingsProvider/res ...
- Android修改系统默认设置
1.launcher的布局太居中,要想两边拉伸 <\packages\apps\Launcher2\res\values\dimens.xml> <dimen name=&qu ...
- android修改系统density,Android应用开发Android 修改系统默认density
本文将带你了解Android应用开发Android 修改系统默认density,希望本文对大家学Android有所帮助. 如你所知在Anroid N 中,系统添加了多个级别的密度值供用户选择. 系统的 ...
- [Android系统]android7.1 修改系统默认输入法
参看博客: Android 7.0 删除原生输入法(AOSP)&更换系统默认输入法_Photon128的博客-CSDN博客_aosp输入法 [RK3288][Android6.0] 调试笔记 ...
- rk3399 9.0修改系统默认输入法
在rk3399 9.0中设置搜狗输入法为系统默认输入法 framework/base/core/java/com/android/internal/inputmethod/InputMethodUti ...
- Android替换/修改系统默认输入法
各大输入法的服务 ro.mtk_default_ime=com.tencent.qqpinyin.QQPYInputMethodService//默认qq输入法 ro.mtk_default_ime= ...
- Android替换系统默认输入法
由于产品需求,需将Android原生输入法先后替换成搜狗输入法.百度输入法.谷歌拼音输入法,本文以替换为谷歌输入法为例. packages/apps下新建文件夹,将需替换的第三方输入法apk放入该文件 ...
- android修改系统默认时间
本文是基于Android5.1的代码 1.如何修改出厂默认日期和默认时区 一.修改默认时间 1.修改RTC默认日期 : Android L之前: \alps\mediatek\custom\[proj ...
- android 6.0 默认输入法,Android中系统默认输入法设置的方法(输入法的显示和隐藏)...
1.调用显示系统默认的输入法 方法一. inputmethodmanager imm = (inputmethodmanager) getsystemservice(context.input_met ...
最新文章
- python语言是什么时候诞生的_python诞生于什么时候
- 【408预推免复习】计算机网络(谢希仁第七版)第一章——概述
- C# WinForm DataGridView单击选中一整行,只能单选
- 谈谈被大家过于在乎的性能
- 今天俺要说一说工厂方法模式(Factory)
- Linux service指令
- android 蒙版图片带拖动_黑橙修图:新手入门篇2-一句话带你认识图层蒙版
- 利用Pin实现CodeCoverage
- Spark源码阅读——DirectInputDStream
- sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第IV部分
- Nginx——安装与虚拟主机配置(域名非80端口问题)
- Java SE 正则表达式 API Pattern 与 Matcher.
- 计算机的excel的知识,计算机基础知识:Excel常用操作(一)
- 关于vue的@click传递
- i58250u是低端处理器吗_玩都市天际线要很大的显卡吗
- NLP | 自然语言处理经典seq2seq网络BERT详解及代码
- 服务器物理安装,安装Nano Server物理服务器Hyper-V角色
- Archlinux安装MacBook无线网卡驱动 (Broadcom 4360)
- 一个程序员的学习历程
- 后浪青年的聊天,需要Python助威!