rk3128 7.1修复插入键盘后软键盘仍然弹出的bug

2023-05-16

有客户反馈说,3128插入物理键盘后,输入时软键盘仍然弹出来。

测试测了一下果然是这样,一开始还以为前任码农改出来的问题,试了一下最新sdk,仍然如此

卧槽。。。然后上网搜,从来都是要求搞强制弹出的,这下子麻爪,按照

Android P控制虚拟键盘的显示和隐藏_android开发 虚拟键盘开关_Eastsea.Chen的博客-CSDN博客

的改法,辛苦摸索出来隐藏的代码是

lzy@ztlsz-PowerEdge-T640:/media/lzywork/rk3128_nougat_mid$ git diff frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java
diff --git a/frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java b/frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java
index 2e9cbf2..a25c383 100644
--- a/frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java
@@ -67,6 +67,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+import android.provider.Settings;
 
 import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
 
@@ -914,7 +915,10 @@ public final class InputMethodManager {
      * @param flags Provides additional operating flags.  Currently may be
      * 0 or have the {@link #SHOW_IMPLICIT} bit set.
      */
-    public boolean showSoftInput(View view, int flags) {
+    public boolean showSoftInput(View view, int flags) {//luke fix 实体键盘时仍然显示虚拟键盘的bug。现在按设置-输入-实体键盘的值来
+        //int ret = Settings.Secure.getInt(view.getContext().getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0);
+        //if( ret == 0) return false;
+        //else return showSoftInput(view, flags, null);
         return showSoftInput(view, flags, null);
     }
     

好了 ,这下子永久隐藏,不插软键盘也隐藏。我都想给这客户直接这么出算了。后来一想,算了还是正经修bug吧。于是加调试信息看现象,最后,补丁如下

lzy@ztlsz-PowerEdge-T640:/media/lzywork/rk3128_nougat_mid$ git diff  frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
diff --git a/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java b/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
index 9a6f804..898c55d 100644
--- a/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
+++ b/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
@@ -1271,7 +1271,12 @@ public class InputMethodService extends AbstractInputMethodService {
         if (mSettingsObserver.shouldShowImeWithHardKeyboard()) {
             return true;
         }
+
+        //luke fix 插入键盘且设置-输入法-实体键盘显示虚拟键未打开时,虚拟键仍显示的问题
         Configuration config = getResources().getConfiguration();
+        if(  config.keyboard == Configuration.KEYBOARD_QWERTY &&config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES )
+            return false;
+
         return config.keyboard == Configuration.KEYBOARD_NOKEYS
                 || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
     }

经本人亲自测试:设置-输入法-物理键盘-显示XXX虚拟键盘的开关现在有用了。

该开关实际修改的值是:

adb shell settings put secure show_ime_with_hard_keyboard 1

adb shell settings get secure show_ime_with_hard_keyboard

代码写法是:


Settings.Secure.putInt(this.getContentResolver(),Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0);
Settings.Secure.getInt(this.getContentResolver(),Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0);  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rk3128 7.1修复插入键盘后软键盘仍然弹出的bug 的相关文章

随机推荐

  • 防止 XML外部实体注入

    方式一 DocumentBuilderFactory dbf 61 DocumentBuilderFactory newInstance 这是优先选择 如果不允许DTDs doctypes 几乎可以阻止所有的XML实体攻击 String F
  • maven搭建mybatis实现增删改查

    第一章框架的概述 1三层结构 mvc web开发 使用mvc架构模式 m 数据 v 视图 c 控制器 c控制器 xff1a 接收请求 调用service对象 显示请求的处理信息 当前的servlet作为控制器 v 视图现在使用jsp htm
  • html5图片垂直居中

    html5图片居中 主要的思路是用table或者table cell xff0c 还有一种不太了解 xff0c 贴在最后 一 xff1a 显式使用table标签 这是只需要定义内容的CSS样式为table cell的 xff0c 并垂直居中
  • libevent设置超时后取消超时(bufferevent_set_timeouts取消超时无效问题)

    libevent用 bufferevent set timeouts 函数来设置读和写的超时时间timeout xff0c 比如设置读超时时间 xff0c 如果接收超时就会调用设置的错误处理函数 以tcp服务器为例 xff0c 在accep
  • (三) 安装VMware虚拟机

    1 将VMware Workstation Full 12 5 6 5528349 x86 64 bundle上传到服务器上 2 执行bundle文件 cd 到bundle文件目录 给bundle文件加权限 sudo chmod 43 x
  • zabbix 5.4 设置钉钉告警

    我们可以通过创建Webhook类型的报警媒介 xff0c 实现zabbix与钉钉群机器人联动 xff0c 从而达到监控主机的实时告警目的 1 创建钉钉机器人 首先在我们的钉钉运维群中新建一个机器人 打开智能群助手 xff0c 选中添加机器人
  • (六) 远程连接windows虚拟机

    1 设置静态ip 1 在vm网络编辑器中 xff0c 选择VMnet8网卡 xff0c 设置子网IP xff08 要统一网络段的 xff09 选择虚拟机 xff0c 在点击Edit下的Virtual Network Editor 设置静态i
  • (六) 更新glibc版本

    glibc版本太低 xff0c 造成个别脚本会执行报错 xff0c 如下错误 1 查看系统glibc支持的版本 strings lib64 libc so 6 grep GLIBC 可以看到最高只支持2 12版本 xff0c 所以考虑编译解
  • (八)、JMeter使用代理录制App手机端性能测试脚本

    1 环境准备 xff1a 1 手机 2 wifi 3 Jmeter 2 具体步骤 xff1a 1 启动Jmeter xff1b 2 测试计划 中添加 线程组 xff1b 3 工作台 中添加 HTTP代理服务器 xff1b 4 配置代理服务器
  • 五、Python编写接口自动化

    1 总结结果 2 详细代码 xff1a coding utf 8 import requests import json class web requests object def init self pass def Interface
  • 十二、VMware vSphere 6.7虚拟化云管理之12、VCSA6.7更新vCenter Server许可

    1 更新vCenter Server许可 1 许可过期提醒 当我们进入系统时 xff0c 上方会有个明显的提示 xff1a 清单中包含许可证已过期或即将过期的 vCenter Server 系统 从官方下载的都是申请60天试用的 xff0c
  • 十三、VMware vSphere 6.7虚拟化云管理之13、VCSA6.7设置主机许可

    1 添加主机许可 1 进入分配许可 管理您的许可证 许可证 添加新许可 2 输入许可证秘钥 这里的许可证可以直接取esxi上的许可即可 3 编辑许可证名称 4 许可证信息核对 5 许可证添加成功之后 xff0c 信息如下 从灰色 可以得知
  • 十四、VMware vSphere 6.7虚拟化云管理之13、VCSA6.7导入主机集群管理

    1 导入主机集群管理 1 新建数据中心 右键 xff0c 选中数据中心 填写数据中心名称 2 添加主机 xff08 1 xff09 选中数据中心 xff0c 右键 xff0c 之后选择 添加主机 xff08 2 xff09 添加至 vCen
  • 常用自动化测试工具

    1 Appium 官网 xff1a http appium io AppUI 自动化测试 Appium 是一个移动端自动化测试开源工具 xff0c 支持iOS 和Android 平台 xff0c 支持Python Java 等语言 xff0
  • android FAILED Binder Transaction 问题的原因

    今天在做一个widget的时候需要填充一个ImageView xff0c 图片来自与网络 发现都会出现FAILED Binder Transaction这个问题 通过google得知 xff0c 原来图片的size不能超过40k Activ
  • 加sudo后执行.sh报错command not found

    今天执行一个 sh文件时 xff0c 刚开始没加sudo xff0c 报了错 xff1a jetson1 64 jetson1 span class token operator span desktop span class token
  • windows 安装zabbix客户端安装

    1 下载安装zabbix agent 打开zabbix的官网下载地址 xff0c 根据自己的zabbix server的版本选择对应的agent版本 zabbix 官网下载地址 由于前文我使用的是zabbix 5 4 xff0c 所以此处我
  • Qt编译arm linux版本-qt everywhere 5.14.0

    本教程仅适用于qt everywhere 5 14 0 迄2021 07 14本人发布为止 xff0c 这是互联网上能找到的最新的交叉编译版本教程 真实 详细 半可用 xff08 后续未测试是否能运行 xff09 1 首先下载qt http
  • 内置googletts并且内置中文语音包

    先上补丁 diff git a frameworks base core java android speech tts TextToSpeech java b frameworks base core java android speec
  • rk3128 7.1修复插入键盘后软键盘仍然弹出的bug

    有客户反馈说 xff0c 3128插入物理键盘后 xff0c 输入时软键盘仍然弹出来 测试测了一下果然是这样 xff0c 一开始还以为前任码农改出来的问题 xff0c 试了一下最新sdk xff0c 仍然如此 卧槽 然后上网搜 xff0c