Android8.1高通平台修改默认输入法

需求

安卓8.1 SDK原生的输入法只能打英文, 需要替换成中文输入法.
以高通平台为例, 其它平台也适用.

查看设备当前默认输入法

adb shell
settings list secure | grep input
可以看到当前默认是LatinIME这个安卓原生输入法.

default_input_method=com.android.inputmethod.latin/.LatinIME
enabled_input_methods=com.android.inputmethod.latin/.LatinIME
input_methods_subtype_history=com.android.inputmethod.latin/.LatinIME;-921088104
selected_input_method_subtype=-921088104
selected_spell_checker=com.android.inputmethod.latin/.spellcheck.AndroidSpellCheckerService

修改SDK替换输入法

这里以百度输入法为例
需要修改settings secure中的default_input_method与enabled_input_methods
在frameworks/base/packages/SettingsProvider/res/values/defaults.xml中添加string
然后在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java的private void loadSecureSettings(SQLiteDatabase db)函数后面调用loadStringSetting

diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index e6a14ec..2bdad47 100644
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -193,4 +193,7 @@<!-- Default for Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED --><integer name="def_captive_portal_detection_enabled" translatable="false">1</integer>
+
+    <string name="config_default_input_method" translatable="false">com.baidu.input/.ImeService</string>
+    <string name="config_enabled_input_method" translatable="false">com.baidu.input/.ImeService</string></resources>
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/
index 9274f39..5202d1a 100644
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2464,6 +2464,11 @@ class DatabaseHelper extends SQLiteOpenHelper {loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,R.integer.def_sleep_timeout);+            loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+                    R.string.config_default_input_method);
+            loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
+                    R.string.config_enabled_input_method);
+

不同输入法,要替换不同的包与类名
常见输入法
百度: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

Settings Provider值保存在data分区中的数据库(旧版本)或xml(新版本)中,所以编译出固件后,要烧录userdata.img.

安装输入法

上面已经修改了新的默认输入法配置, 然后再安装新输入法进去就可以了.
或者在SDK中内置.
内置输入法步骤

  1. mk中添加编译
    build/make/target/product/core.mk
    PRODUCT_PACKAGES += BaiduIME
  2. 网上下载百度输入法apk重命名为BaiduIME.apk放入packages/apps/BaiduIME/下
  3. 新增Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := BaiduIME
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
LOCAL_PROPRIETARY_MODULE :=true
include $(BUILD_PREBUILT)

编译后烧录system.img就完成内置输入法为系统应用了,如果要内置成非系统应用则Android.mk写法是不一样的,SDK中也要做修改,这些就不表述了.
作者:帅得不敢出门 csdn原创谢绝收录及转换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用compile_commands.json配置includePath环境,解决vscode中引入头文件处有波浪线的问题

通过编译时生成的 compile_commands.json 文件自动完成对 vscode 中头文件路径的配置&#xff0c;实现 vscode 中的代码的自动跳转。完成头文件路径配置后&#xff0c;可以避免代码头部导入头文件部分出现波浪线&#xff0c;警告说无法正确找到头文件。 步骤 需要在 vscode 中…

木馒头头戴式蓝牙耳机

这里写目录标题 木馒头二代头戴式蓝牙耳机清除连接记忆 木馒头二代头戴式蓝牙耳机清除连接记忆 在配对模式下&#xff0c;同时按住播放和暂停按钮4秒&#xff0c;LED闪烁紫色3次&#xff0c;即为清除成功。

电子烟开发【恒压、恒有效算法】

恒压算法 pwm是通过软件模拟的 pwm满值运行是250全占空比 #define D_TARGET_AVERAGE_VOLTAGE 3500 //R_ADC1_Vout &#xff1a;发热丝两端AD值 //R_ADC_FVR &#xff1a;电池电压AD值 //FVR_VOLTAGE &#xff1a;电池AD参考电压 满电值AD //R_Smk1Duty &#xff1a;最后…

Java 面试题:String、StringBuffer、StringBuilder 有什么区别?

几乎所有的应用开发都离不开操作字符串&#xff0c;理解字符串的设计和实现以及相关工具如拼接类的使用&#xff0c;对写出高质量代码是非常有帮助的。关于这个问题&#xff0c;我前面的回答是一个通常的概要性回答&#xff0c;至少你要知道 String 是 Immutable 的&#xff0c…

深入分析 Android Service (一)

文章目录 深入分析 Android Service (一)1. Android Service 设计说明1.1. Service 的类型1.2. Service 的生命周期1.3. 创建和启动 Service1.4. 绑定 Service1.5. ServiceConnection1.6. 前台 Service1.7. IntentService示例&#xff1a;创建和使用 IntentService 2. Service …

CentOS7部署Yearning并配置MySQL数据库远程访问详细流程——“cpolar内网穿透”

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 本文主要介绍在 Linux 系统简单部署 Yearning 并结合 cpolar 内网穿透工具实现远程访问&#xff0c;破除…

Git基本使用教程(学习记录)

参考文章链接&#xff1a; Git教程&#xff08;超详细&#xff0c;一文秒懂&#xff09; RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理&#xff1a;更新或回退到历史上任何版本&#xff0c;数据备份共享代码&#xff1a;团队间共享代码&#xff0c;…

立哥开源技术-基于Python的TTS分析脚本

import pyttsx3 # 创建一个引擎实例 engine pyttsx3.init() # 获取所有可用的语音列表 voices engine.getProperty(voices) # 打印出所有可用的语音名称和属性 for voice in voices: print("Voice:") print(" - 名称: %s" % voice.name) …

【vscode篇】1-VScode设置语言为中文,2-解决中文注释乱码问题。

设置语言为中文 在前端开发中&#xff0c;Visual Studio Code(简称vscode)是一个非常好用的工具&#xff0c;但第一次打开vscode会发现界面为英文&#xff0c;这对很多开发者来说会很不友好&#xff08;比如我&#xff09;&#xff0c;把界面设置成中文只需要安装一个插件即可&…

从零入门激光SLAM(二十二)——Fast-lio2代码详解(三) 迭代误差更新

Fast-lio2原理解析见链接从零入门激光SLAM&#xff08;二十一&#xff09;——看不懂FAST-LIO&#xff1f;进来_fastlio 雷达 更改频率-CSDN博客 注释版代码完整版见GitHub - huashu996/Fast-lio2-Supernote: Fast-lio2 code with note 本代码解析以算法流程的逻辑解析代码&…

C#面:如果不用VisualStudio,用哪个命令行编译C#程序

可以使用命令提示符或者终端来执行编译命令 csc.exe 。 步骤&#xff1a; 打开命令提示符或终端。使用 cd 切换到 C# 程序所在的目录。使用以下命令来编译C#程序&#xff1a; 其中&#xff0c;是你的C#源代码文件的名称&#xff08;包括扩展名.cs&#xff09;。如果编译成功&…

ONLYOFFICE 协作空间与 WordPress 如何集成

转载自作者&#xff1a;VincentYoung&#xff0c;略有改动 阅读本文&#xff0c;了解如何将 ONLYOFFICE 协作空间与 WordPress 进行集成。 ONLYOFFICE 协作空间是其去年新推出的产品&#xff0c;用创建虚拟办公室房间的方式&#xff0c;来组织公司内部团队成员的在线协作办公&…

C++中的双指针和三指针

目录 摘要 双指针&#xff08;Double Pointers&#xff09; 含义 使用场景 三指针&#xff08;Triple Pointers&#xff09; 含义 使用场景 总结 双指针的详细说明 三指针的详细说明 摘要 在C中&#xff0c;双指针和三指针分别是指向指针的指针和指向指向指针的指针…

C. Swap Adjacent Elements 题解

C. Swap Adjacent Elements 题解 S A E 题目大意思路代码题目大意 输入格式: 第一行一个整数 n n n ( 2 ≤ (2≤ (2≤ n n n ≤ 200000 ) ≤200000) ≤200000) 第二行 n个整数 a 1 a_1 a1​, a 2 a_2 a2​

redis 允许外网访问

要使Redis服务器允许外网访问&#xff0c;可以遵循以下步骤进行配置&#xff1a; 编辑Redis配置文件&#xff1a; 找到Redis的配置文件&#xff0c;通常位于/etc/redis/redis.conf&#xff0c;但位置可能因安装方式和操作系统而异。取消绑定本地地址&#xff1a;在配置文件中&a…

Charles-ios无法抓包原因之一证书

VPN证书安装完成后依然无法抓包存在无网络问题 VPN安装证书后直接抓包这时候抓包接口返回无网络&#xff0c;原因是IOS通用-关于本机-证书信任设计未开启信任

webpack5零基础入门-19HMR的应用

1.定义 HMR即HotModuleReplacement 开发时&#xff0c;当我们修改了其中一个模块的代码webpack默认会将所有模块重新打包编译&#xff0c;速度很慢所以我们需要做到修改摸个模块代码&#xff0c;只对这个模块的代码重新打包编译&#xff0c;其他模块不变&#xff0c;这样打包…

elementUI dialog 组件二次封装 before-close 回调函数作用

before-close 弹框关闭前的回调函数&#xff0c;父组件可以向子组件传递一个函数&#xff0c;用于修改子组件内的变量变量。应用场景如下&#xff1a; 1、封装 dialog 组件为 baseDialog&#xff0c;页面中使用 baseDialog 组件。 2、封装 dialog 组件为 baseDialog&#xff…

OpenAI和Anthropic在人工智能领域各自进行着不同的工作,以下是对它们工作内容的清晰归纳

OpenAI和Anthropic在人工智能领域各自进行着不同的工作&#xff0c;以下是对它们工作内容的清晰归纳&#xff1a; OpenAI&#xff1a; 公司背景与使命&#xff1a; 成立于2015年12月11日&#xff0c;总部位于美国旧金山。是一家由营利性公司OpenAI LP及非营利性母公司OpenAI …

ubuntu20.04部署gitlab流程

参考&#xff1a; https://blog.csdn.net/weixin_57025326/article/details/136048507 362 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.2.1-ce.0_amd64.deb/download.deb367 sudo apt install gitlab-ce…