输入法框无法正常显示问题
最近在分析一个客户问题:设备在使用一段时间后,输入法框diag无法正常显示。
public class InputMethodManagerService extends IInputMethodManager.Stubimplements ServiceConnection, Handler.Callback {static final boolean DEBUG = false;static final String TAG = "InputMethodManagerService";@Retention(SOURCE)@IntDef({ShellCommandResult.SUCCESS, ShellCommandResult.FAILURE})private @interface ShellCommandResult {int SUCCESS = 0;int FAILURE = -1;}
public class InputManagerService extends IInputManager.Stubimplements Watchdog.Monitor {static final String TAG = "InputManager";static final boolean DEBUG = false;
将上述两个地方的DEBUG设置为true后,发现输入法show hide流程log都是正常的。
同时输入法异常时,home和recent键失效。
通过分析客户的代码发现,可以app 在接受网络消息后,通过disableKeyguard hide 锁屏界面,此时设备最上层app显示。
但是由于锁屏并没有真正disable,而是在上层app之下。
继续分析InputMethod发现,在InputMethodManagerService.java 中存在是否锁屏的判断
private boolean isScreenLocked() {return mKeyguardManager != null&& mKeyguardManager.isKeyguardLocked() && mKeyguardManager.isKeyguardSecure();}
InputMethodSubtypeSwitchingController.java public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeList(boolean includeAuxiliarySubtypes, boolean isScreenLocked) {final ArrayList<ImeSubtypeListItem> imList = new ArrayList<>();final HashMap<InputMethodInfo, List<InputMethodSubtype>> immis =mSettings.getExplicitlyOrImplicitlyEnabledInputMethodsAndSubtypeListLocked(mContext);if (immis == null || immis.size() == 0) {return Collections.emptyList();}if (isScreenLocked && includeAuxiliarySubtypes) {if (DEBUG) {Slog.w(TAG, "Auxiliary subtypes are not allowed to be shown in lock screen.");}includeAuxiliarySubtypes = false;}mSortedImmis.clear();mSortedImmis.putAll(immis);for (InputMethodInfo imi : mSortedImmis.keySet()) {if (imi == null) {continue;}
Slog.w(TAG, “Auxiliary subtypes are not allowed to be shown in lock screen.”); 上述log,说明google设计思路,在没有解锁时,输入法diag是不允许显示。
解决方案:
在systemui中处理解锁流程。具体略
同时可以通过 adb shell dumpsys window p 来判断输入法可以弹框。
输入法框无法正常显示问题相关推荐
- Windows 右下角 输入法 图标 不见了 显示输入法 图标 绝对成功
Windows 右下角 输入法 图标 不见了 显示输入法 图标 绝对成功 开始菜单运行"ctfmon"命令, 重新启动系统后,你会发现输入法图标重新出现了,而且所有安装的输入法全部 ...
- vue点击input框出现弹窗_vue组件实现弹出框点击显示隐藏效果
本文实例为大家分享了vue实现弹出框点击显示隐藏的具体代码,供大家参考,具体内容如下 效果如下图 由于我的更改密码弹出框是一个组件引用的,所以在一开始是隐藏的,这就需要在当前的页面上对弹出框组件设置v ...
- html文本框 控件,标签和文本框都用于显示文本
用标签和文本框都可以显示文本信息,二者有什么区别 标签和文本框控件都可以显示文本,它们之间有什么区别?标签只能显示一横... 文本框可以显示很多横... 不对.标签框(Label)不能输入文本. VB ...
- vue组件弹出框点击显示隐藏
1. vue组件弹出框点击显示隐藏 转载于:https://www.cnblogs.com/knuzy/p/9525852.html
- Android监听系统输入法键盘弹出显示与隐藏事件
Android监听系统输入法键盘弹出显示与隐藏事件 有时候需要监听Android系统输入法的弹出显示事件,比如:微信聊天时,不管你当前在聊天中的什么位置(上滑查看消息历史),每当你点击输入框时,都会自 ...
- 解决百度地图搜索框在底层显示不出来
/*解决百度地图搜索框在底层显示不出来*/ 官方出的补丁,把这个放在html顶端即可 <style type="text/css"> .tangram-suggesti ...
- Ubuntu16.04搜狗拼音输入法候选栏无法显示中文(英文乱码)
Ubuntu16.04搜狗拼音输入法候选栏无法显示中文(英文乱码) 输入中文时,若候选栏显示英文乱码.无法显示中文,如下图所示,可按如下方式处理: cd ~/.config rm -rf SogouP ...
- vue el-element中el-select的el-option选中值,但页面框中不显示值,需要输入一个其他框值才显示,input同理
问题描述: el-element中el-select的el-option选中值,但页面框中不显示值,需要输入一个其他框值才显示.或者解决input无法输入值. //在el-select中写一个事件 @ ...
- select下拉框选中不显示
select下拉框选中不显示 1.浏览器缓存问题,可以尝试清楚浏览器缓存 2.代码问题,先查看代码是否正确, 3.编译问题,重新编译代码即可
最新文章
- mysql 故障处理_MySQL日志故障的处理和分析
- STM32跑分?看看你的能跑多少分!
- swift5的SnipKit框架使用
- EyeQ Ultra 芯片 面向自动驾驶
- 修改MySQL中字段的类型和长度
- Atitit 多元化战略 适合我们发展 的核心业务attilax总结
- 注册测绘师考试复习视频资料
- SIR传染病模型(微分方程系列1)
- HMTL5高拍仪开发包(支持谷歌 百度 火狐 360 QQ IE10以上等浏览器)
- 居民小区变配电电力监控系统-安科瑞苏月婷
- 详解正向代理与反向代理
- ChemDraw19激活中文版下载化学绘图软件教程
- 中职教计算机专业发展,中等职业教育中计算机专业教育思考
- python弹幕分析_用Python抓取bilibili弹幕并分析
- 【本科生科研入门】英文科技论文写作-绘图篇
- android 10系统下载地址,Android 10正式版
- 使用MATLAB快速提取图片数据
- 用python控制钉钉软件_python 调用钉钉机器人的方法
- Mysqlworkbench汉化步骤
- Linux美化贴图!
热门文章
- android小说阅读、MVP + RxJava + Retrofit项目、证件拍照裁剪、蓝牙锁等源码
- xiuno 邮箱设置
- 李峋爱心代码 程序员教你用代码制作爱心网页[樱花+爱心],正好拿去送给女神给她个惊喜
- 解决 zbrush导出的模型在blender里没有颜色的问题
- Android短信Messaging数据库字段分析
- 计算机基本单位——位、字节、字、字长
- 富士通笔记本最新系统恢复方法——系统工具恢复
- Excel打印时完整显示合并的单元格区域
- cuda安装以及conda安装对应版本的pytorch-gpu
- 基于unity3D的趣味桌球游戏开发