当前位置: 首页 > news >正文

MTK平台 Android12-Android13 默认搜狗输入法

系统默认搜狗输入法功能实现

文章目录

  • 需求:
    • 场景
  • 参考资料
  • 需求实现
    • 内置搜狗输入法
      • 配置第三方apk .mk 和 搜狗安装包,不可卸载方式
      • 搜狗输入法module 配置到系统device.mk 中去
    • 设置搜狗输入法为默认输入法
    • 给输入法授权,默认所有权限
  • 总结
    • 思考


需求:

MTK平台 内置搜狗输入法,用搜狗输入法作为默认的输入法功能

场景

Android平台常用的输入法有系统默认的谷歌拼音、搜狗、讯飞、手心…

各个客需会选择适合自己的输入法,一般会默认内置一个输入法,很少有默认两个输入法的。

参考资料

MTK内置第三方APP-卸载不可卸载-签名问题
Android 10.0 修改搜狗为默认输入法,并且授予运行权限

需求实现

实现需求分为3步骤

  • 内置搜狗输入法
  • 设置搜狗输入法为默认输入法
  • 搜狗输入法默认全部授权权限【规避 搜狗输入法弹出来时候还需要授权操作】

内置搜狗输入法

之前有过相关笔记,可以参考下 MTK内置第三方APP-卸载不可卸载-签名问题

配置第三方apk .mk 和 搜狗安装包,不可卸载方式

在这里插入图片描述

这里我们看看Android.mk 源码配置怎样的

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := sogouinput
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
##LOCAL_PROPRIETARY_MODULE := true
LOCAL_ENFORCE_USES_LIBRARIES := false
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)

备注说明:

  • LOCAL_CERTIFICATE := PRESIGNED

表明是用的apk 自己的签名,这也是为什么后面第三步骤中我们需要给搜狗输入法默认所有权限的原因。

  • LOCAL_MODULE := sogouinput
    这里的MODULE 名称为sogouinput, 那么在系统配置编译模块环境编译到系统的时候,就是用的这个module 的value 值 sogouinput 的。

搜狗输入法module 配置到系统device.mk 中去

路径:

device\mediatek\system\common\device.mk

具体配置如下
在这里插入图片描述

设置搜狗输入法为默认输入法

在配置文件中配置输入法即可,路径如下:

frameworks/base/core/res/res/values/config.xml

具体配置如下,配置输入法包名。

    <!-- The list of IMEs which should be disabled until used.
         This function suppresses update notifications for these pre-installed apps.
         We need to set this configuration carefully that they should not have functionarities
         other than "IME" or "Spell Checker". In InputMethodManagerService,
         the listed IMEs are disabled until used when all of the following conditions are met.
         1. Not selected as an enabled IME in the Settings
         2. Not selected as a spell checker in the Settings
         3. Installed
         4. A pre-installed IME
         5. Not enabled
         And the disabled_until_used state for an IME is released by InputMethodManagerService
         when the IME is selected as an enabled IME. -->
	 <!--item>com.android.inputmethod.latin</item-->
    <string-array name="config_disabledUntilUsedPreinstalledImes" translatable="false">
        <item>com.sohu.inputmethod.sogou</item>
    </string-array>

给输入法授权,默认所有权限

修改文件路径:

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

具体修改内容如下,grantDefaultPermissions 方法中,给输入法包名授权

    public void grantDefaultPermissions(int userId) {
        DelayingPackageManagerCache pm = new DelayingPackageManagerCache();
       .....
        grantRuntimePermissionsForFisePackage(pm, userId, "com.sohu.inputmethod.sogou");
         .....
        pm.apply();
    }

grantRuntimePermissionsForFisePackage 方法可自行查看,通过pm ,拿到资源文件里面权限和请求权限,全部授权一次来实现默认所有权限已授权状态。

最后编译rom,刷固件。
使用效果,进入输入框就直接弹出搜狗输入法了

在这里插入图片描述

总结

  • 常用客需功能,仅供参考,在MTK平台上面的实践,在RK平台上面只有内置方式不一致而已,默认方式和授权其实一样的。
  • 这里只是搜狗输入法的默认方式一次探讨,其它输入法默认 思路完全一样。
  • 每种输入法有自己优劣,具体场景具体客需具体对待

思考

  • 为什么不给系统签名 ? 其实在日常开发中能不给系统签名的就不会给系统签名,给了系统签名还可能存在编译不通过问题,具体问题具体对待

相关文章:

  • 借壹起航东风,中国工厂出海开启新征程
  • C语言的总结分享
  • 深度解析「前缀和」与「差分法」:高效算法的基石
  • B站左神算法课学习笔记(P7):图
  • 自然数k次方的前n项和通项公式
  • 23种设计模式-解释器(Interpreter)设计模式
  • html5炫酷3D数字时钟项目开发实践
  • systemd-networkd的配置文件的优先级 笔记250325
  • 【MySQL】MySQL B+树的查询数据过程是怎样的?
  • 【数据可视化艺术·进阶篇】热力图探秘:用色彩演绎场馆和景区的人流奥秘
  • 【读论文】——基于高光谱成像技术测定玉米籽粒硬度
  • 基于 arco 的 React 和 Vue 设计系统
  • 3.0 Disruptor的使用介绍(一)
  • RocketMQ 详细知识点总结
  • 分布式渲染与云渲染:技术与应用的黄金搭档
  • ‘算力智子‘的突破:DeepSeek引领AI发展新篇章
  • [C++面试] 你了解视图吗?
  • 1996-2023年全国31省政府干预度/财政干预度数据(含原始数据+计算过程+结果)
  • 【Python LeetCode Patterns】刷力扣,15 个学习模式总结
  • RK3568笔记八十: Linux 小智AI环境搭建
  • 网站制作公司兴田德润简介/用广州seo推广获精准访问量
  • 国外代码开源网站/seo报告
  • 苏州企业建设网站公司/在线域名解析ip地址
  • 一般做网站的在哪里找/网络seo推广培训
  • 河北最近发生了什么事/搜索引擎优化seo专员
  • 网站建设要求 牛商网/线下推广方案