zoukankan      html  css  js  c++  java
  • Android 9.0 添加预置第三方输入法/设置默认输入法(软键盘)


    Android 输入法设置文章

      Android 9.0 默认输入法的设置流程分析

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


      

    前言

    在一些Android项目中往往需要预置第三方输入法或自己的输入法,这篇文章就简单讲解如何预置第三方输入法apk及设置默认输入法

     

    结果展示

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

    调整方法

    • 代码位置

    /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加入两个字符串常量,设置可选输入法列表及默认输入法如下:

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

    enabled_input_methods ==> 启用的输入方法列表

    default_input_method     ==> 默认输入法

     

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

    DatabaseHelper.java的loadSecureSettings方法中加入:

    1 loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
    2 loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.default_input_method);
    View Code

     

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

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

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

     1 PackageParser.Package MY_IME2 = getSystemPackage("net.myself.inputmethod.swpinyin2");
     2 if(MY_IME2 != null && doesPackageSupportRuntimePermissions(MY_IME2)){
     3      grantRuntimePermissions(MY_IME2, MICROPHONE_PERMISSIONS, userId);
     4      grantRuntimePermissions(MY_IME2, STORAGE_PERMISSIONS, userId);
     5      grantRuntimePermissions(MY_IME2, CONTACTS_PERMISSIONS, userId);
     6      grantRuntimePermissions(MY_IME2, LOCATION_PERMISSIONS, userId);
     7      grantRuntimePermissions(MY_IME2, CAMERA_PERMISSIONS, userId);
     8      grantRuntimePermissions(MY_IME2, PHONE_PERMISSIONS, userId);
     9      grantRuntimePermissions(MY_IME2, CALENDAR_PERMISSIONS, userId);
    10 }
    View Code

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

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

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

    大功告成!!

     

     

     

    心有猛虎,细嗅蔷薇,生活就该无惧无悔..... PS:文章系作者工作学习总结,受作者知识水平的限制,文章难免有错误之处,仅供参考,转载请注明出处:http://www.cnblogs.com/roger-yu/
  • 相关阅读:
    双 MySQL 启动、停止脚本
    Mysql 备份与恢复
    Mysql Replication 主从同步
    SYN Flood 防范
    HTTP 1.0 & 1.1
    Memcache 内存对象缓存系统
    Redis 非关系型数据库 ( Nosql )
    Keepalived 角色选举
    Keepalived 资源监控
    keepalived
  • 原文地址:https://www.cnblogs.com/roger-yu/p/15166440.html
Copyright © 2011-2022 走看看