ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android 9.0 添加预置第三方输入法/设置默认输入法(软键盘)

2021-08-20 15:03:00  阅读:375  来源: 互联网

标签:预置 输入法 IME2 java grantRuntimePermissions userId 软键盘 MY


结果展示

在介绍基本的调整方法前,先看看效果图, 如下

 

调整方法

  • 代码位置

/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java

 

  • 修改步骤

(一) 设置启用的输入方法列表 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml

比如我们添加一个输入法,包名及名称为:net.myself.inputmethod.swpinyin2/.SWIME,defaults.xml加入两个字符串常量,设置可选输入法列表及默认输入法如下:

<string name="enabled_input_methods" translatable="false">net.myself.inputmethod.swpinyin2/.SWIME:com.android.inputmethod.latin/.LatinIME</string>
<string name="default_input_method" translatable="false">net.sunniwell.inputmethod.swpinyin2/.SWIME</string>

enabled_input_methods: 启用的输入方法列表

default_input_method:默认输入法

 

(二) 加载到Setings数据库 /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

DatabaseHelper.java的loadSecureSettings方法中加入:

loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.default_input_method);

 

(三) 默认授予输入法必要权限 /frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java

在DefaultPermissionGrantPolicy.java的grantDefaultSystemHandlerPermissions函数中,加入

PackageParser.Package MY_IME2 = getSystemPackage("net.myself.inputmethod.swpinyin2");
if(MY_IME2 != null && doesPackageSupportRuntimePermissions(MY_IME2)){
     grantRuntimePermissions(MY_IME2, MICROPHONE_PERMISSIONS, userId);
     grantRuntimePermissions(MY_IME2, STORAGE_PERMISSIONS, userId);
     grantRuntimePermissions(MY_IME2, CONTACTS_PERMISSIONS, userId);
     grantRuntimePermissions(MY_IME2, LOCATION_PERMISSIONS, userId);
     grantRuntimePermissions(MY_IME2, CAMERA_PERMISSIONS, userId);
     grantRuntimePermissions(MY_IME2, PHONE_PERMISSIONS, userId);
     grantRuntimePermissions(MY_IME2, CALENDAR_PERMISSIONS, userId);
}

注:权限根据实际需求修改

 

(四) 将需要预置的输入法apk预编译进image,打包,重新烧写系统

 

经过如上调整,就可以在Settings中看到添加的第三方输入法了,而且可以在Android原生输入法和自己预置的输入法间切换。

如果不需要Android原生输入法可以将其直接删掉。

大功告成!!

 

 

 

 

标签:预置,输入法,IME2,java,grantRuntimePermissions,userId,软键盘,MY
来源: https://www.cnblogs.com/roger-yu/p/15166440.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有