Android 12 (InputMethodManagerService) 替换默认输入法为Pinyin输入法
2023-12-21 20:32:05
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 packages
PRODUCT_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.Stub
Slog.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 ) {
+ }
+ }
文章来源:https://blog.csdn.net/wq892373445/article/details/135138932
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!