Android 12 (InputMethodManagerService) 替换默认输入法为Pinyin输入法

本文主要是介绍Android 12 (InputMethodManagerService) 替换默认输入法为Pinyin输入法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.问题场景

由于系统自带的Latin输入法不支持遥控器操作,需要替换为RK的拼音输入法。

2. 替换步骤

1)将LatinIME从mk中删除,让系统编译的时候不编译该apk

--- a/Android/build/make/target/product/handheld_product.mk
+++ b/Android/build/make/target/product/handheld_product.mk
@@ -23,7 +23,6 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/media_product.mk)# /product packagesPRODUCT_PACKAGES += \Browser2 \
-    LatinIME \preinstalled-packages-platform-handheld-product.xml \SettingsIntelligence \frameworks-base-overlays

2)添加PinyinIME的编译预装

--- a/Android/device/rockchip/common/modules/rockchip_apps.mk
+++ b/Android/device/rockchip/common/modules/rockchip_apps.mk
@@ -20,3 +20,5 @@#     RkVideoPlayer \#     RkExplorer \#     StressTest
+PRODUCT_PACKAGES += \
+       PinyinIME

3)设置PinyinIME为默认输入法。这一步在网上搜了几个方案 ,但是都有些问题,后面自己试验用如下方式可以设置成功,即在InputManagerServices.java的buildInputMethodListLocked函数中添加设置默认输入法值的动作

+++ b/Android/frameworks/base/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -4560,6 +4560,26 @@ public class InputMethodManagerService extends IInputMethodManager.StubSlog.e(TAG, "buildInputMethodListLocked is not allowed until system is ready");return;}
+        String defaultIme = Settings.Secure.getString(mContext
+             .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
+        if ( defaultIme == null ) {
+            final Resources res = mContext.getResources();
+            try{
+                String myIME = "com.android.inputmethod.pinyin/.PinyinIME";
+                if ( myIME != null && myIME.length() > 0 )
+                {
+                    Settings.Secure.putString( mContext.getContentResolver(),
+                            Settings.Secure.DEFAULT_INPUT_METHOD,
+                            myIME );
+                    Settings.Secure.putString( mContext.getContentResolver(),
+                        Settings.Secure.ENABLED_INPUT_METHODS,
+                        myIME );
+                }
+            } catch( Exception e ) {
+            }
+        }

这篇关于Android 12 (InputMethodManagerService) 替换默认输入法为Pinyin输入法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/531325

相关文章

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py