Android 5.1 预制输入法

本文详细介绍了如何在Android系统中将默认输入法设置为讯飞输入法,包括将讯飞输入法apk预制到系统app中,修改defaults.xml和DatabaseHelper.java文件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Android修改默认输入法为讯飞方法如下:

首先将讯飞输入法apk预制到系统app中:

在firefly-rk3288_android5.1_git_20180126/out/target/product/rk3288/system/app目录下新建app文件夹

将apk文件拷贝到新建文件夹中

将app中库拷贝到firefly-rk3288_android5.1_git_20180126/out/target/product/rk3288/system/lib

 

1、修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml 添加一行:

    <!--carroll 添加讯飞输入法开始-->
    <string name="config_default_input_method" translatable="false">com.iflytek.inputmethod/.FlyIME</string>
    <!--carroll 添加讯飞输入法结束-->

注释:com.iflytek.inputmethod/.FlyIME 为讯飞输入法ID,若想修改为其它输入法只需要修改这个ID即可。   

2、修改frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

       在 private void loadSecureSettings(SQLiteDatabase db) {} 方法中添加一行

            /* carroll 添加讯飞输入法开始 */
            loadStringSetting( stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
                    R.string.config_default_input_method);
            /* carroll 添加讯飞输入法结束 */

3、 修改完毕重新编译固件验证修改结果。

 

成功烧录后,使用输入框先弹出的即为讯飞输入法

 

转载于:https://www.cnblogs.com/CZM-/p/9547983.html

<think>好的,我现在需要帮助用户了解如何在Android手机上让预装的搜狗输入法可以升级或卸载。首先,我需要整理已有的引用内容,看看里面有哪些相关的信息。 用户提供的引用中有几个关键点: 1. 引用[2]和[5]提到了如何将搜狗输入法设置为默认输入法以及预置无源码APK的方法,包括使用Settings.Secure.putString和preinstall.sh脚本安装APK。 2. 引用[3]和[4]讨论了如何禁止用户卸载应用,以及预装应用是否可以删除的情况。例如,酷比魔方C1预装的搜狗输入法是可以删除的。 3. 引用[5]中的preinstall.sh脚本将APK复制到/data/app目录并设置权限,这可能影响应用是否可以升级,因为/data/app下的应用通常可以被用户更新。 现在,用户的问题是关于如何让预装的搜狗输入法能够升级或卸载。根据Android系统,预装应用通常分为系统应用(安装在/system分区)和用户应用(安装在/data分区)。系统应用默认不可卸载,除非有root权限,而用户应用可以卸载。 从引用[5]中的preinstall.sh脚本来看,APK被安装到/data/app目录,这里通常是用户应用的位置,所以理论上用户是可以卸载的。但实际情况可能取决于厂商的设置。如果应用被预置到/system分区(如/system/app或/system/priv-app),则用户无法卸载,除非有root权限。 关于升级问题,如果应用安装在/data/app,用户可以正常通过应用商店升级。如果安装在/system分区,可能需要覆盖安装到用户分区,或者厂商提供系统更新来升级。 根据引用[3],禁止卸载的方法涉及修改系统设置,而允许卸载可能需要将应用预装到用户可写的位置,如/data/app,而不是/system分区。此外,引用[4]提到某些预装应用可以删除,可能因为它们被安装到用户分区。 因此,解决方案可能包括: 1. 将搜狗输入法预装到/data/app目录,这样用户可卸载,且能通过应用商店升级。 2. 如果必须预装到/system分区,需要修改系统配置,允许卸载或升级,可能需要签名一致,或者在系统更新时替换APK。 另外,引用[5]的脚本中使用pm install安装APK到/data/app,这种情况下应用应该可以被用户卸载,但需要确保预装脚本正确设置权限和路径。 可能还需要考虑Android版本的不同,如引用[1]提到安卓8.15.1路径不同,但实现方法相同,需要注意路径的正确性。 总结步骤: - 预装到用户可写目录(如/data/app)以实现可卸载和升级。 - 避免将应用放入/system分区,或使用可卸载的配置。 - 确保APK签名一致,允许市场更新。 最后,检查是否有其他因素,如设备厂商的定制限制,可能需要调整预装方法或配置。</think>### Android预置搜狗输入法实现可升级/卸载的方法 #### 1. 控制预装路径实现可卸载 将搜狗输入法预置到用户可写目录(如$data/app$),而非系统只读目录(如$system/app$)。 **实现代码示例**: ```shell # preinstall.sh脚本中指定用户目录 cp -r /vendor/operator/app/sougou.apk /data/app/ chmod 0644 /data/app/sougou.apk ``` - 此路径下的应用用户拥有卸载权限[^5] - 需确保APK签名与后续市场版本一致才能升级[^4] #### 2. 系统分区预装的特殊处理 若必须预装到$system$分区: ```mk # Android.mk配置 LOCAL_MODULE := SogouInput LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_PATH := $(TARGET_OUT)/app # 而非system/priv-app LOCAL_CERTIFICATE := PRESIGNED # 允许签名更新 ``` - 配置$LOCAL_MODULE_PATH$为非特权目录 - 声明$PRESIGNED$证书允许覆盖安装[^3] #### 3. 禁用厂商卸载限制 在设备系统配置中: ```xml <!-- packages.xml中移除保护标记 --> <package name="com.sohu.inputmethod.sogou" protected="false" /> ``` - 需系统签名或root权限修改 - 部分厂商ROM需关闭系统写保护 #### 4. 输入法管理优化 ```java // 动态检测默认输入法状态 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if(imm.getInputMethodList().contains("com.sohu.inputmethod.sogou")) { Settings.Secure.putString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD, "com.sohu.inputmethod.sogou/.SogouIME"); // 保持默认状态[^2] } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值