Android 默认输入法配置问题
Android默认输入法的配置和两个关键词相关,都保存在SettingsProvider或者settings_secure.xml里面。一个是enabled_input_methods,表示配置的系统允许使用的输入法的id字符串,中间以冒号分隔,比如com.android.inputmethod.latin/.LatinIME:com.xxxx.inputmethod.remote/.RemoteIME,另外一个是default_input_method,表示配置的系统默认使用的输入法。
/*** List of input methods that are currently enabled. This is a string* containing the IDs of all enabled input methods, each ID separated* by ':'.*/public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
/*** Setting to record the input method used by default, holding the ID* of the desired method.*/public static final String DEFAULT_INPUT_METHOD = "default_input_method";
在InputMethodService启动时,一方面会从packagemanager那边获取InputMethodService的应用信息,另一方面也会settings数据库里面读取enabled_input_methods对应的输入法信息。如果后者是空的,则会把前者保存起来并enable,并通过InputMethodUtils.getMostApplicableDefaultIME方法来获取最适合当前系统的输入法,并设置为默认的输入法。如果后者不是空的,则会读取settings数据库的default_input_method信息,如果是有效的输入法就会把它设置为默认的输入法,如果不是有效的是空的则还是会通过getMostApplicableDefaultIME方法来获取最适合当前系统的输入法。
逻辑理清楚了,那么通过settings配置设置系统默认的输入法也就明确了,只要两步。
1.在SettingsProvider下defaults.xml添加enabled_input_methods和default_input_method的配置项。
<string name="def_input_method" translatable="false">com.xxxx.inputmethod.remote/.RemoteIME</string><string name="enabled_input_methods" translatable="false">com.android.inputmethod.latin/.LatinIME:com.xxxx.inputmethod.remote/.RemoteIME</string>
2.在SettingsProvider内的DatabaseHelper类里面loadSecureSettings里面添加上面两个值的读取。
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.def_input_method);loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
顺便说下,虽然SettingsProvider从N版本开始就重构了,数据库里面的值都保存在data/users/userid/xxx_settings.xml里面,但是SettingsProvider在初始化时仍然会从之前创建的数据库里面把这些数据迁移出来,所以在defaults里面或者overlay对应的defaults文件下面配置的键值对都是始终有效的。
Android 默认输入法配置问题相关推荐
- android代码打开语言和输入法设置,Android默认输入法勾选多国语言,并默许其中一种语言...
Android默认输入法勾选多国语言,并默认其中一种语言 1.首先在设备上调整输入法 设置>语言输入法>Android键盘(AOSP),在输入语言里勾选要选择的语言,比如选"英语 ...
- android 默认输入法,踩坑之Android默认输入法配置
前言 在实际项目开发过程中,需要集成客户的输入法,但Android原生并不支持输入法的配置.在这里记录下实际操作. 支持默认输入法配置 Android原生并不支持默认输入法的设置,默认就是谷歌原生的输 ...
- android默认输入法设置
设置默认输入法 在 frameworks\base\core\res\res\values\config.xml 添加一个属性: <!--leo add--> <string nam ...
- 修改其他输入法为android 默认输入法
有些输入法预制到系统中时默认情况下是不能直接使用的,要在设置->语言和键盘中勾选相应输入法,这里提供了一种参考改进,使预制输入法直接可用. 共有两处修改,第一处: 在android2 ...
- Android TV 源码修改默认输入法
前一阵子,应泰国客户需求,需要在Android TV系统定制一个多语言输入法,至少支持中.英.泰三种语言.拿到这个任务,对于至今还是小白的我来说,当然先去google一下有没有大神专门做过符合要求的输 ...
- Android.Settings类设置默认输入法
Android的所有系统设置项(如音量.触摸提示音.默认输入法等信息)均是保存到一个数据库.在界面上调整设置时将值保存到该数据库,开机时将从数据库读取值作为默认设置.这些读取.设置操作都可以通过API ...
- android mtk平台,android mtk平台默认输入法
[Description] 如何修改默认输入法? [Solution] 一.适用于ICS(Android V4.0)之前的版本: 1. 安装需要用的默认输入法(.apk)到system/app 2. ...
- android 11.0 12.0第三方输入法app设置系统默认输入法
1.概述 在11.0 12.0的产品开发中,有功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置 输入法的相关功能需求,然后根据输入法包名来设置默认输入法 2.第三方输入法app设置 ...
- Android 修改系统默认输入法
原文出处:http://www.ccbu.cc/framework/modify-default-inputmethod.html 1. 修改系统默认输入法 Android系统的默认输入法在很多情况下 ...
最新文章
- 并发编程-21J.U.C组件拓展之Future和FutureTask
- Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法?...
- Frequent values【线段树】
- Java成员方法的声明和调用
- git-文本内容的回退-缓冲区退到工作区-工作区改动后改为改动前
- Gibbs Sampling\吉布斯采样(三)
- Datalogic得利捷发布IMPACT 2D机器人引导URCap插件
- 大学生高等数学竞赛复习资料
- Junit 4 的 @Before 和 @BeforeClass 对比 Junit 5 @BeforeEach 和 @BeforeAll
- ams1117 lm317 对比_最受电子工程师欢迎的10款经典稳压电源器件,电路当中经常用到...
- 搭建属于自己的影视网站
- vs下qt混合编译错误:MOC问题
- 低版本MacOS安装Nginx
- 最大传输单元MTU详解
- linux与windows双系统windows无法连网问题的解决
- 状语从句不是简单句_英语简单句、从句分类及解析
- php教程燕十八_2PHP 3小时光速入门视频教程【燕十八】
- node.js毕业设计安卓移动LYQ电子商城APP(程序+APP+LW)
- IPTABLES知识
- eSPI自学笔记(三):Run-time Flash Access Channel
热门文章
- 第一次将学习的知识实际应用于现实情况
- java 分享到qq空间_Android中集成QQ登陆和QQ好友分享及QQ空间分享
- python进行聚类分析:鸢尾花(iris)代码
- delphi mysql 乱码_Delphi连接mysql中文乱码的解决办法
- mysql pt online_[MySQL] 材料表结构转移的好助手 pt-online-schema-change
- eclipse安装插件:XXX cannot be resolved解决方案
- Flutter-选取图库图片和拍照功能,选取视频和拍摄视频
- U盘和硬盘实际容量与标称容量
- NYOJ 1575 我想满手鲜血
- android 变量定义数组,android 创建数组